Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69

Биндинг DataGrid

07.05.2024, 18:30. Показов 3802. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Не могу разобраться с привязкой данных в элементе DataGrid...

У меня есть следующие классы:
1) Корпуса
C#
1
2
3
4
5
6
7
8
9
10
11
public class Корпуса
{
    //public Корпус()
    //{
    //    this.Кабинет = new HashSet<Кабинет>();
    //}
 
    public int Код_корпуса { get; set; }
    public string Адрес { get; set; }
    public virtual ICollection<Кабинеты>? Кабинеты { get; set; }
}
2) Кабинеты
C#
1
2
3
4
5
6
7
8
9
public class Кабинеты
{
    public int Код_кабинета { get; set; }
    public int Номер_кабинета { get; set; }
    public int Количество_рабочих_мест { get; set; }
    public int Код_корпуса { get; set; }
    public virtual Корпуса Корпуса { get; set; }
 
}
Также есть 2 формы: на 1 форме я выбираю интересующий меня корпус, а на 2 форме отображаются все те кабинеты, которые находятся в нем

Код разметки ДатаГрида 2 окна, в котором я хочу получить: номер кабинета, кол-во рабочих мест и адрес корпуса, в котором расположен тот или иной кабинет
XML
1
2
3
4
5
6
7
<DataGrid x:Name="DG" AutoGenerateColumns="False" Margin="162,60,162,85">
    <DataGrid.Columns>
        <DataGridTextColumn Header="№ кабинета" Binding="{Binding Номер_кабинета}"/>
        <DataGridTextColumn Header="Кол-во рабочих мест" Binding="{Binding Количество_рабочих_мест}"/>
        <DataGridTextColumn Header="Адрес корпуса" Width="*" Binding="{Binding корпуса.Адрес}"/> //проблема в этой части
    </DataGrid.Columns>
</DataGrid>
Код метода для заполнения (получается так, что с 1 формы на 2 я передаю только код выбранного корпуса (переменная getSelectedCorpus )):
C#
1
2
3
4
5
6
7
8
private async void GetCorpuses()
{
    var responseCorp = await client.GetStringAsync("корпуса");
    var responseCab = await client.GetStringAsync("кабинеты");
    var кабинеты = JsonConvert.DeserializeObject<List<Кабинеты>>(responseCab);
    var корпуса = JsonConvert.DeserializeObject<List<Корпуса>>(responseCorp).Where(p => p.Код_корпуса == getSelectedCorpus); //getSelectedCorpus - переменная, которая получает код выбранного корпуса с 1ой формы
    DG.ItemsSource = кабинеты.Where(p => p.Код_корпуса == getSelectedCorpus).ToList();
}
Вопрос, думаю, понятен по комментариям, но лучше продублирую: подскажите пожалуйста, как мне заполнить последний столбец (Адрес корпуса), используя Binding, чтобы выводился адрес выбранного корпуса для каждой записи кабинета в таблице
Я только начал изучать АПИ и взаимодействие с данными, полученными в результате парсинга, поэтому действую по аналогии работы с EntityFramework (когда добавляется модель напрямую в проект и уже по связям можно взаимодействовать с таблицами)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2024, 18:30
Ответы с готовыми решениями:

Биндинг в DataGrid не обновляет данные
Когда меняю значение у ком бокса и проверяю Перечень2, а он как был false так и остался при проверке точки остановки видно что в class...

Биндинг коллекции объектов к DataGrid
Здравствуйте. Собственно есть структура: namespace SingleParameterOptimization { public struct ResultData { ...

Биндинг TextBox и столбца DataGrid
Подскажите, пожалуйста, каким образом можно привязать TextBox к столбцу DataGrid, таким образом, чтоб при позиционировании на строке...

52
 Аватар для xellan24rus
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  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
Получается если вы работаете с Task то void ваш враг, и он может дать вам кучу проблем.
Учту, спасибо
Цитата Сообщение от xellan24rus Посмотреть сообщение
именно ради этой привязки. То есть для него не нужна связь один к одному "Кабинеты > Корпус" Оно служит целью отобразить данные и ничего больше.
Я делаю так, чтобы можно было отобразить все кабинеты корпуса по коду корпуса. В 1 корпусе же может быть много кабинетов
Цитата Сообщение от xellan24rus Посмотреть сообщение
Если это так то лучше использовать для View оболочку, работать с DTO ибо задание такого принципа в бд это грязная реализация
А что за Dto...?
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 18:41
Цитата Сообщение от ProgNew Посмотреть сообщение
А можете еще пожалуйста сказать возможно ли реализация следующего и если да, то каким образом:
Все возможно. Суть связей на простом примере. У вас есть 10 классов и 10 учителей. Это связь один к одному. Вы знаете по ID к какому классу принадлежит учитель.
Если же вы уберете эти связи то вы не будете знать к какому классу принадлежит учитель и наоборот. А если вы не знаете то это проблема уже.
И как писали ранее про выборочно брать данные, для отдельных случаев это нужно, но также бывают и случаи где можно данные получить со всеми связями. Тут уже стоит ориентироваться на то что нужно вам.
К примеру Кабинеты и одно свойство Корпуса если там явная связь то нет никаких проблем получить эти данные как есть, а не делать лишние запросы.

Добавлено через 2 минуты
Цитата Сообщение от ProgNew Посмотреть сообщение
А что за Dto...?
Один из шаблонов проектирования, используемый для передачи данных.
В отличие от business object или Data Access Object, DTO не должен содержать какого-либо поведения.
То есть в них вы можете передавать только то что нужно, без лишних свойств и т.п

Добавлено через 1 минуту
Цитата Сообщение от ProgNew Посмотреть сообщение
все кабинеты корпуса по коду корпуса.
Если вы отображаете все кабинеты корпуса по его коду. То зачем Корпуса свойство нужно?

Добавлено через 52 секунды
А не лучше тогда чтобы Корпус содержал список кабинетов?

Добавлено через 1 минуту
Один корпус и в нем допустим 100 кабинетов. Сейчас же у вас есть кабинеты где есть свойство код_кабинета вместо его id, и вместо связи. То есть таблицы никак не связаны между собой.
Если смотреть на связи то в рамках один ко многим: Корпус содержит кабинеты, а не наоборот > получать кабинеты потом искать его корпуса

Добавлено через 2 минуты
В связи один ко многим вы получаете корпус по его ID и кабинеты доступны сразу, так как между ними связь. Вам нужно это?
0
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
08.05.2024, 18:56  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
В связи один ко многим вы получаете корпус по его ID и кабинеты доступны сразу, так как между ними связь. Вам нужно это?
Получается, что так... Я в общем запутался, что нужно убрать, а что оставить...
В классе Корпуса у меня есть
C#
1
public virtual ICollection<Кабинеты> Кабинеты { get; set; }
, а в классе Кабинеты есть
C#
1
2
public int Код_корпуса { get; set; }    
public virtual Корпуса Корпуса { get; set; }
Классы сформированы на основе добавления модели бд, а уже на их основании были созданы контроллеры WebAPI
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
08.05.2024, 18:57
Цитата Сообщение от xellan24rus Посмотреть сообщение
Сейчас System.Text.Json достаточно хорошо работает, я не встречал с ним проблем ради которых поставил бы Newtonsoft.Json.
Ещё дополню.
System.Text.Json - это дефакто стандарт.
Все публичные API работают через него.
Newtonsoft - это и стандарт и целая куча кастомных возможностей.
Вполне можно с его помощью создать JSON, который не будет читать Text.Json.
Именно поэтому для сериализации лучше от него отказать.
Десериализацию можно делать, но здесь возникает проблема отладки и совместимости. Если JSON создавался с помощью Text.Json, то однозначно его парсинг можно сделать так же через него. И если не получается, то это значит что делается что-то неверно и нужно исправлять код. А с Newtonsoft можно не заметить такую ошибку и потом получить баги после релиза.

Цитата Сообщение от xellan24rus Посмотреть сообщение
мне только не понятен прицин работы.
1) Кабинеты содержит свойство Корпуса
2) Корпуса содержат список Кабинеты.
Для "1 ко многим" - это часто используется. Хотя не рационально. Поэтому "продвинутые ADO-шники" предпочитают не задавать навигационные свойства-коллекции.

Цитата Сообщение от xellan24rus Посмотреть сообщение
у автора апишка своя. Я предложил пример со связями с той целью что изначально бд настроена криво. Суть примера как настроить связи в данной ситуации
Настройка сервера (БД и API) - это отдельный вопрос. С БД согласен с вами, что должна быть нормальная схема, которая сама обеспечивает целостность данных БД.
Но вот нужно ли этот всё передавать в JSON через API?
Вот запрошены кабинеты одного корпуса, и чтобы в каждом кабинете был указан корпус, нужно будет в JSON дополнительно в каждый кабинет внедрить одинаковые корпуса. Сильно много не нужной информации получается.
Конечно рационально в JSON передавать только ID корпуса. А список корпусов передавать отдельно (в том же ответе или отдельном запросе - это не принципиально). И уже в клиенте эти два списка связывать между собой.
Локальная БД и работа с ней через EF - это уже совсем другие условия. DbContext берёт на себя задачу кеширования и связывания сущностей. Поэтому для таких запросов через DbContext такое связанное получение сущностей это нормально и часто используется.

Цитата Сообщение от ProgNew Посмотреть сообщение
можете еще пожалуйста сказать возможно ли реализация следующего и если да, то каким образом:
Конечно можно.
Что за вопрос?

Здесь нужно сначала создать нормальный сервер с нормальным API.
Для оптимальной работы нужна возможность получать списки не только всех сущностей, но и по заданным параметрам.
0
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
08.05.2024, 18:58  [ТС]
Я так понимаю, что
Цитата Сообщение от ProgNew Посмотреть сообщение
public virtual Корпуса Корпуса { get; set; }
нужно убрать?
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 19:00
Цитата Сообщение от ProgNew Посмотреть сообщение
Получается, что так
Вот и разобрались что у вас точно лишнее.
Цитата Сообщение от ProgNew Посмотреть сообщение
В классе Корпуса у меня есть
Это я помню)
Цитата Сообщение от ProgNew Посмотреть сообщение
Классы сформированы на основе добавления модели бд, а уже на их основании были созданы контроллеры WebAPI
Верно, но так как связей нет изначально. То и там и там уже все не правильно сделано
Цитата Сообщение от ProgNew Посмотреть сообщение
нужно убрать?
Я составлю просто пример со связями. Изучите. Сейчас вы запутались просто
0
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
08.05.2024, 19:01  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
Я составлю просто пример со связями. Изучите. Сейчас вы запутались просто
Спасибо...
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 19:17
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ещё дополню.
Согласен.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для "1 ко многим" - это часто используется. Хотя не рационально
В коде вопроса иная суть, оба класса без нужды ссылаются друг на друга. И что бы получить корпус нужно получить кабинет, затем взять "id" и по нему искать все корпуса. Все ничего бы, но связей там нет. И навигационных свойств тоже. Ef сама при задание связей задает id там где надо. В вопросе "id" создаются вручную, и чтобы что то получить нужно делать лишние действия =\
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но вот нужно ли этот всё передавать в JSON через API?
Все передавать не нужно. Как писал ранее пример только для того чтобы показать как работают связи. Когда получу все ответы для создания примера, в ответе напишу очевидную причину по которой ui или сервер может лечь отдыхать если использовать такой подход не думая. В рамках темы было выяснено что нужно получать со связями какие то данные, а какие то лучше использовать выборочно. Не вижу проблем в примере где что то ужасало бы правильности подхода.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Поэтому "продвинутые ADO-шники" предпочитают не задавать навигационные свойства-коллекции.
Понимаю, навигация может быть избыточна при большем объеме данных, тут лучше выборочно дергать данные.

Добавлено через 3 минуты
Цитата Сообщение от xellan24rus Посмотреть сообщение
тут лучше выборочно дергать данные.
А если берем выборочно то навигация не нужна. Но это уже более продвинутое решение, хотя и не сложное, которое как мне кажется выходит за рамки вопроса. И чтобы к такому решению переходить не плохо будет освоить базовые связи, чтобы понимание было как это работает.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
08.05.2024, 19:21
Цитата Сообщение от xellan24rus Посмотреть сообщение
А если берем выборочно то навигация не нужна.
Навигационные свойства нужны в Модели на сервере, для работы с локальной БД и ответов на запросы по API.
А вот в клиенте... На уровне API они будут излишни. Там достаточно просто ID сущностей для связей.
А вот на уровне View-VM вполне могут пригодится для упрощения реализации View.
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 19:32
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Навигационные свойства нужны в Модели на сервере, для работы с локальной БД и ответов на запросы по API.
Я про это имел ввиду.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А вот на уровне View-VM вполне могут пригодится для упрощения реализации View.
Тут не обойтись без оболочки над данными для vm. У ef есть метод который для сущностей сделает inpc сам, но при сложных связях могут быть проблемы.

Добавлено через 3 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А вот в клиенте... На уровне API они будут излишни. Там достаточно просто ID сущностей для связей.
В целом передали id получили корпуса, для первого запроса можно и выборочно отдать первые 100 кабинетов спокойно. На озу или view это не отобразится сильно. А далее уже уже дергать кабинеты выборочно, с начального до нужного индекса. Вполне функционально для клиента. И такое много где используется.
0
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
08.05.2024, 19:45  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
Сейчас вы запутались просто
Я, конечно, в край уже обнаглел, но не могли бы Вы показать мне пример вот для такой связки...?
Классы:
1) Корпуса(код корпуса, адрес) (в 1 корпусе может быть много кабинетов)
2) Кабинеты(код кабинета, номер кабинета, количество рабочих мест, код корпуса)
3) Оборудование(код оборудования, наименование оборудования, серийный номер)
4) ОборудованиеКабинета(код оборудования кабинета, код кабинета, код оборудования, номер рабочего места) (промежуточная таблица между Кабинеты и Оборудование)
5) ЗаявкиНаРемонт(код заявки, код оборудования кабинета (айдишник из ОборудованиеКабинета), дата добавления заявки)
Как вообще должны быть настроены классы/контроллеры и как на их основе выполнять биндинги в датаГриде, чтобы я мог получить соответствующие данные по коду корпуса: номер кабинета, наименование оборудования, номер рабочего места, дата добавления заявки, а также мог обрабатывать SelectedItem и на его основе извлекать поля соответствующих классов
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 20:03
ProgNew, сейчас у вас подобное реализовано? Если да то можно что то оттуда взять для примера.
В целом смотрите вы прячете истинные id за: код кабинета, код оборудования, код корпуса. Чего вы хотите из этого получить? Допустим юзер выбирает в таблице кабинет и создает заявку на ремонт. В ЗаявкиНаРемонт лучше хранить id записей кабинета, ведь ему нужен ремонт. По id вы можете получить всю информацию о кабинете. Что такое эти коды и откуда берутся я не понимаю. В моем понимание это id других сущностей по которым я могу получить хоть что.
Цитата Сообщение от ProgNew Посмотреть сообщение
4) ОборудованиеКабинета(код оборудования кабинета, код кабинета, код оборудования, номер рабочего места) (промежуточная таблица между Кабинеты и Оборудование)
Вы имете ввиду чтобы класс Кабинеты содержал данные об оборудование?

Добавлено через 3 минуты
Цитата Сообщение от ProgNew Посмотреть сообщение
Как вообще должны быть настроены классы/контроллеры и как на их основе выполнять биндинги в датаГриде, чтобы я мог получить соответствующие данные по коду корпуса: номер кабинета, наименование оборудования, номер рабочего места, дата добавления заявки, а также мог обрабатывать SelectedItem и на его основе извлекать поля соответствующих классов
SelectedItem хранит выбранные данные равные типу данных источника. Если в списке string, то и в SelectedItem должен быть string. Следовательно если в списке коллекция класса, то в SelectedItem задан класс. А из класса доступны все свойства.
Я могу настроить таблицу по вашей просьбе, сделать пример с каким то из классов. Но не реализовать все приложение.
0
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
08.05.2024, 20:14  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
id других сущностей по которым я могу получить хоть что.
Да да, именно так
Цитата Сообщение от xellan24rus Посмотреть сообщение
В ЗаявкиНаРемонт лучше хранить id записей кабинета
Ну вот у меня сущности: Корпуса (idКорпуса, Адрес), Кабинеты (idКабинета, Номер кабинета, Кол рабочих мест, idКорпуса), Оборудование (idОборудование, Наименование оборудования и Серийный номер), ОборудованиеКабинетов (idОборудованиеКабинетов, idКабинета, idОборудования) и сущность ЗаявкиНаРемонт (idЗаявки, idОборудованиеКабинетов, Дата создания)
Пользователь выбирает корпус (сущность Корпуса), ему отображается список кабинетов (сущность Кабинеты). При выборе кабинета загружается таблица с оборудованием (сущность ОборудованиеКабинета), которое находится в нем. Далее пользователь выбирает неисправное оборудование и нажимает "Создать заявку" и данные фиксируются системой (сущность ЗаявкиНаРемонт). Далее в системе появляется Лаборант, который может выбрать конкретный корпус, в зависимости от которого (получается от idКорпуса) заполняется таблица заявками. Вроде подробно описал суть.
Цитата Сообщение от xellan24rus Посмотреть сообщение
Но не реализовать все приложение
Нет нет, я и не прошу этого, просто попросил у вас пример работы с такими выворотами(
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 20:28
Цитата Сообщение от ProgNew Посмотреть сообщение
Далее пользователь выбирает неисправное оборудование и нажимает "Создать заявку"
Но мы не можем знать без участия юзера исправное оборудование или нет. Может все таки кнопка будет "Создать заявку на ремонт", Тогда мы можем создать заявку на ремонт.
Остальное вроде понял.
Цитата Сообщение от ProgNew Посмотреть сообщение
Нет нет, я и не прошу этого, просто попросил у вас пример работы с такими выворотами(
Хорошо по возможности в ближайшие дни выложу проект с примером.
0
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
08.05.2024, 20:37  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
Вы имете ввиду чтобы класс Кабинеты содержал данные об оборудование?
Ну вот допустим я выбрал корпус и получил именно те записи сущности ОборудованиеКабинетов, в которых idКабинета относится к выбранному корпусу
C#
1
2
var responseEquipmentCabOfCorpus = await client.GetStringAsync("GetТехникаКабинетаКорпуса/" + id);
var оборудованиеКабинетовВыбранногоКорпуса = JsonConvert.DeserializeObject<List<ОборудованиеКабинетов>>(responseEquipmentCabOfCorpus);
Теперь я хочу отобразить заявки (сущность ЗаявкиНаРемонт), в которых idОборудованиеКабинетов берется из
var оборудованиеКабинетовВыбранногоКорпуса, который я получил выше

Но дальше не могу получить записи ЗаявокНаРемонт, в которых idОборудованиеКабинетов==idОборудованиеК абинетов из полученного выше (оборудованиеКабинетовВыбранногоКорпуса)
C#
1
2
var responseOrders = await client.GetStringAsync("GetЗаявкиНаРемонт/");
            var заявкиКорпуса = JsonConvert.DeserializeObject<List<ЗаявкиНаРемонт>>(responseOrders).Where(p => p.idОборудованиеКабинетов  == оборудованиеКабинетовВыбранногоКорпуса.idОборудованиеКабинетов); //вот тут ошибка и не понимаю а на что уже менять...
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 20:53
Цитата Сообщение от ProgNew Посмотреть сообщение
Ну вот допустим я выбрал корпус и получил именно те записи сущности ОборудованиеКабинетов, в которых idКабинета относится к выбранному корпусу
Но сначала нужно выбрать корпус, затем кабинет. И только потом для кабинета в данном корпусе получим оборудование.
Цитата Сообщение от ProgNew Посмотреть сообщение
Но дальше не могу получить записи ЗаявокНаРемонт, в которых idОборудованиеКабинетов==idОборудованиеК абинетов из полученного выше (оборудованиеКабинетовВыбранногоКорпуса)
Зачем это получать не понятно. Лучше тогда чтобы кабинеты содержали заявки на ремонт. Тогда Заявки будут ссылаться на кабинет
0
0 / 0 / 0
Регистрация: 16.02.2022
Сообщений: 69
08.05.2024, 21:04  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
Но сначала нужно выбрать корпус, затем кабинет. И только потом для кабинета в данном корпусе получим оборудование.
Да я же говорю, что я якобы от лица Лаборанта уже взаимодействую. Он выбирает корпус и ему должны отобразиться заявки на ремонт именно в выбранном корпусе
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
08.05.2024, 21:08
Цитата Сообщение от ProgNew Посмотреть сообщение
Он выбирает корпус и ему должны отобразиться заявки на ремонт именно в выбранном корпусе
Тогда надо сортировать заявки по id которое ссылается у кабинетов на корпус. Для это связь-схема таблиц и настраивается. Чтобы данные знали про взаимосвязанные сущности
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
08.05.2024, 21:44
Цитата Сообщение от ProgNew Посмотреть сообщение
4) ОборудованиеКабинета(код оборудования кабинета, код кабинета, код оборудования, номер рабочего места) (промежуточная таблица между Кабинеты и Оборудование)
Вот не пойму зачем эта таблица.
Ведь оборудование может быть только в одном месте. Оно не может одновременно в двух местах.

Добавлено через 1 минуту
Цитата Сообщение от ProgNew Посмотреть сообщение
номер рабочего места
Вот это без хранимки не проконтролируешь.
Лучше сделать ещё таблицу "Место в Кабинете"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2024, 21:44

Биндинг в HeaderTemplate для DataGrid (WPF)
Есть компонент Combobox с возможностью множественного выбора. Если его просто поместить на форму &lt;control:MultiSelectComboBox...

Подскажите как можно сделать биндинг элемента внутри DataGrid к полю из вью модели?
Добрый день, Хочу сделать форму с DataGrid с фильтрами в столбцах. Проблема заключается что я не могу прибиндить textbox с фильтром к...

DataGrid: установить фокус на строку DataGrid, а не на сам DataGrid
Добрый день! Есть следующий код: public partial class MainWindow : Window { DataTable dt = new DataTable(); ...

Как зеркально отобразить dataGrid одного окна в dataGrid в другом окне?
Здравствуйте. Столкнулся с проблемой. Не знаю, как отобразить зеркально dataGrid одного окна, в dataGrid другого окна? Возможно ли...

Удалить выбранную строку в DataGrid, если DataGrid содержит коллекцию
Здравствуйте! Скажите пожалуйсто, как удалить выбраную строку в DataGrid, если DataGrid содержит коллекцию. пример выражения: //Метод ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru