|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
|||||||||||||||||||||
Биндинг DataGrid07.05.2024, 18:30. Показов 3802. Ответов 52
Метки нет (Все метки)
Доброго времени суток! Не могу разобраться с привязкой данных в элементе DataGrid...
У меня есть следующие классы: 1) Корпуса
Код разметки ДатаГрида 2 окна, в котором я хочу получить: номер кабинета, кол-во рабочих мест и адрес корпуса, в котором расположен тот или иной кабинет
Я только начал изучать АПИ и взаимодействие с данными, полученными в результате парсинга, поэтому действую по аналогии работы с EntityFramework (когда добавляется модель напрямую в проект и уже по связям можно взаимодействовать с таблицами)
0
|
|||||||||||||||||||||
| 07.05.2024, 18:30 | |
|
Ответы с готовыми решениями:
52
Биндинг в DataGrid не обновляет данные Биндинг коллекции объектов к DataGrid
|
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|
| 08.05.2024, 18:26 | |
|
Или же атрибутами игнорировать это свойство для Ef, а для Json на апишке заполнять это свойство. Тогда у вас не будет ошибки NullExeption при серелизации. Ведь вы так и не показали что за ошибка с Json была у вас, но судя по получению данных и принципу серилизации похоже ошибка была в свойстве Корпуса.
Давайте лучше сделаем так, выложите проект на гит и дайте ссылку. По коду больше пойму что вам нужно.
0
|
|
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
||||
| 08.05.2024, 18:28 [ТС] | ||||
|
0
|
||||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
||||
| 08.05.2024, 18:41 | ||||
|
Если же вы уберете эти связи то вы не будете знать к какому классу принадлежит учитель и наоборот. А если вы не знаете то это проблема уже. И как писали ранее про выборочно брать данные, для отдельных случаев это нужно, но также бывают и случаи где можно данные получить со всеми связями. Тут уже стоит ориентироваться на то что нужно вам. К примеру Кабинеты и одно свойство Корпуса если там явная связь то нет никаких проблем получить эти данные как есть, а не делать лишние запросы. Добавлено через 2 минуты В отличие от business object или Data Access Object, DTO не должен содержать какого-либо поведения. То есть в них вы можете передавать только то что нужно, без лишних свойств и т.п Добавлено через 1 минуту Добавлено через 52 секунды А не лучше тогда чтобы Корпус содержал список кабинетов? Добавлено через 1 минуту Один корпус и в нем допустим 100 кабинетов. Сейчас же у вас есть кабинеты где есть свойство код_кабинета вместо его id, и вместо связи. То есть таблицы никак не связаны между собой. Если смотреть на связи то в рамках один ко многим: Корпус содержит кабинеты, а не наоборот > получать кабинеты потом искать его корпуса Добавлено через 2 минуты В связи один ко многим вы получаете корпус по его ID и кабинеты доступны сразу, так как между ними связь. Вам нужно это?
0
|
||||
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
||||||||||||
| 08.05.2024, 18:56 [ТС] | ||||||||||||
|
В классе Корпуса у меня есть
0
|
||||||||||||
|
Модератор
|
|||||
| 08.05.2024, 18:57 | |||||
System.Text.Json - это дефакто стандарт.Все публичные API работают через него. Newtonsoft - это и стандарт и целая куча кастомных возможностей. Вполне можно с его помощью создать JSON, который не будет читать Text.Json. Именно поэтому для сериализации лучше от него отказать. Десериализацию можно делать, но здесь возникает проблема отладки и совместимости. Если JSON создавался с помощью Text.Json, то однозначно его парсинг можно сделать так же через него. И если не получается, то это значит что делается что-то неверно и нужно исправлять код. А с Newtonsoft можно не заметить такую ошибку и потом получить баги после релиза. Но вот нужно ли этот всё передавать в JSON через API? Вот запрошены кабинеты одного корпуса, и чтобы в каждом кабинете был указан корпус, нужно будет в JSON дополнительно в каждый кабинет внедрить одинаковые корпуса. Сильно много не нужной информации получается. Конечно рационально в JSON передавать только ID корпуса. А список корпусов передавать отдельно (в том же ответе или отдельном запросе - это не принципиально). И уже в клиенте эти два списка связывать между собой. Локальная БД и работа с ней через EF - это уже совсем другие условия. DbContext берёт на себя задачу кеширования и связывания сущностей. Поэтому для таких запросов через DbContext такое связанное получение сущностей это нормально и часто используется. Что за вопрос? Здесь нужно сначала создать нормальный сервер с нормальным API. Для оптимальной работы нужна возможность получать списки не только всех сущностей, но и по заданным параметрам.
0
|
|||||
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
|
| 08.05.2024, 18:58 [ТС] | |
|
0
|
|
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|||||
| 08.05.2024, 19:00 | |||||
|
0
|
|||||
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
|
| 08.05.2024, 19:01 [ТС] | |
|
0
|
|
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
||||||
| 08.05.2024, 19:17 | ||||||
|
Добавлено через 3 минуты
0
|
||||||
|
Модератор
|
||
| 08.05.2024, 19:21 | ||
|
А вот в клиенте... На уровне API они будут излишни. Там достаточно просто ID сущностей для связей. А вот на уровне View-VM вполне могут пригодится для упрощения реализации View.
0
|
||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
||||
| 08.05.2024, 19:32 | ||||
|
Добавлено через 3 минуты
0
|
||||
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
||
| 08.05.2024, 19:45 [ТС] | ||
|
Классы: 1) Корпуса(код корпуса, адрес) (в 1 корпусе может быть много кабинетов) 2) Кабинеты(код кабинета, номер кабинета, количество рабочих мест, код корпуса) 3) Оборудование(код оборудования, наименование оборудования, серийный номер) 4) ОборудованиеКабинета(код оборудования кабинета, код кабинета, код оборудования, номер рабочего места) (промежуточная таблица между Кабинеты и Оборудование) 5) ЗаявкиНаРемонт(код заявки, код оборудования кабинета (айдишник из ОборудованиеКабинета), дата добавления заявки) Как вообще должны быть настроены классы/контроллеры и как на их основе выполнять биндинги в датаГриде, чтобы я мог получить соответствующие данные по коду корпуса: номер кабинета, наименование оборудования, номер рабочего места, дата добавления заявки, а также мог обрабатывать SelectedItem и на его основе извлекать поля соответствующих классов
0
|
||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|||
| 08.05.2024, 20:03 | |||
|
ProgNew, сейчас у вас подобное реализовано? Если да то можно что то оттуда взять для примера.
В целом смотрите вы прячете истинные id за: код кабинета, код оборудования, код корпуса. Чего вы хотите из этого получить? Допустим юзер выбирает в таблице кабинет и создает заявку на ремонт. В ЗаявкиНаРемонт лучше хранить id записей кабинета, ведь ему нужен ремонт. По id вы можете получить всю информацию о кабинете. Что такое эти коды и откуда берутся я не понимаю. В моем понимание это id других сущностей по которым я могу получить хоть что. Добавлено через 3 минуты Я могу настроить таблицу по вашей просьбе, сделать пример с каким то из классов. Но не реализовать все приложение.
0
|
|||
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
||||
| 08.05.2024, 20:14 [ТС] | ||||
|
Пользователь выбирает корпус (сущность Корпуса), ему отображается список кабинетов (сущность Кабинеты). При выборе кабинета загружается таблица с оборудованием (сущность ОборудованиеКабинета), которое находится в нем. Далее пользователь выбирает неисправное оборудование и нажимает "Создать заявку" и данные фиксируются системой (сущность ЗаявкиНаРемонт). Далее в системе появляется Лаборант, который может выбрать конкретный корпус, в зависимости от которого (получается от idКорпуса) заполняется таблица заявками. Вроде подробно описал суть.
0
|
||||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|||
| 08.05.2024, 20:28 | |||
|
Остальное вроде понял.
0
|
|||
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
||||||||||||
| 08.05.2024, 20:37 [ТС] | ||||||||||||
var оборудованиеКабинетовВыбранногоКорпуса, который я получил выше Но дальше не могу получить записи ЗаявокНаРемонт, в которых idОборудованиеКабинетов==idОборудованиеК абинетов из полученного выше (оборудованиеКабинетовВыбранногоКорпуса)
0
|
||||||||||||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|||
| 08.05.2024, 20:53 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
|
||
| 08.05.2024, 21:04 [ТС] | ||
|
0
|
||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
||
| 08.05.2024, 21:08 | ||
|
0
|
||
|
Модератор
|
|||
| 08.05.2024, 21:44 | |||
|
Ведь оборудование может быть только в одном месте. Оно не может одновременно в двух местах. Добавлено через 1 минуту Лучше сделать ещё таблицу "Место в Кабинете"
0
|
|||
| 08.05.2024, 21:44 | |
|
DataGrid: установить фокус на строку DataGrid, а не на сам DataGrid Как зеркально отобразить dataGrid одного окна в dataGrid в другом окне? Удалить выбранную строку в DataGrid, если DataGrid содержит коллекцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|