powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вывод связанных таблиц в два DataGridView
10 сообщений из 10, страница 1 из 1
Вывод связанных таблиц в два DataGridView
    #37199457
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите - как вывести две связанные таблицы - в два DataGridView, причем во второй таблице информация уже отфильтрована по выделенной строке в первой (те же таблицы из Northwind - Customers и Orders)

По сути хотел бы получить, как здесь: Отображение главного и подчиненного представлений данных с использованием двух элементов управления DataGridView в Windows Forms , только вместо DataSet заюзать LINQ2SQL.
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37199481
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
озарение приходит по мере написания поста:

Код: plaintext
1.
2.
3.
4.
5.
6.
            var customers = from c in northwind.Customers
                            where c.CustomerID.StartsWith("A")
                            select c;
            bsMaster.DataSource = customers;
            bsDetail.DataSource = customers;
            bsDetail.DataMember = "Orders";

правда при навигации по datagridview_master изменение в дочерней не происходит. Думаю обработать событие сетки по перемещению. это не костыль?
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37199520
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
за что я люблю sql.ru - мозг начинает думать, как начинаешь что то писать сюда.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
            
            DbGridMaster.DataSource = bsMaster;
            DbGridDetail.DataSource = bsDetail;            
            
            var customers = from c in northwind.Customers
                            where c.CustomerID.StartsWith("A")
                            select c;
            bsMaster.DataSource = customers;
            bsDetail.DataSource = DbGridMaster.DataSource;
            bsDetail.DataMember = "Orders";

всем спасибо
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37199596
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кстати то было one-to-many, интересно а как же быть с many-to-many?

на примере таблиц Products - OrderDetaols - Orders
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37201650
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
покурил я вот этого черта
How to implement a many-to-many relationship using Linq to Sql ?

просто адского масштаба костыль.

парни - дык че - LINQ2SQL не айс?!
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37202581
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mrbrooks,

Пошаговый пример для построения master-detail с использованием визуальных компонентов.

Бросаем на форму DataSet и два DataGridView

Добавляем в dataSet, две таблицы - master и detail.

Создаем masterBindingSource для для master обычным способом. DataSource - dataSet, DataMember - master и подключаем первый грид через него.

Создаем в dataSet связь между master и detait. При этом в detail должен быть первичный ключ.

Если связь сделана правильно, то при выборе BindingSource для detailGridView у master появится дочерняя таблица detail. Ее и надо выбрать. При этом автоматически будет создан BindingSource для связи master-detail.

Поглядев на сгенерированый код в Form.Designer.cs можно разобраться в обших принципах работы.

========
Многие-ко-многим делаются точно так же, но в Dataset будет три таблицы. Промежуточная не отображается в своем гриде, вот и вся разница
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37203876
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2mrbrooks,

Пошаговый пример для построения master-detail с использованием визуальных компонентов.

Бросаем на форму DataSet и два DataGridView

Добавляем в dataSet, две таблицы - master и detail.

Создаем masterBindingSource для для master обычным способом. DataSource - dataSet, DataMember - master и подключаем первый грид через него.

Создаем в dataSet связь между master и detait. При этом в detail должен быть первичный ключ.

Если связь сделана правильно, то при выборе BindingSource для detailGridView у master появится дочерняя таблица detail. Ее и надо выбрать. При этом автоматически будет создан BindingSource для связи master-detail.

Поглядев на сгенерированый код в Form.Designer.cs можно разобраться в обших принципах работы.

========
Многие-ко-многим делаются точно так же, но в Dataset будет три таблицы. Промежуточная не отображается в своем гриде, вот и вся разница

спасибо за ответ.
да - как с DataSet я в курсе, про это хорошо описано в ссылке моего первого поста ([10471496] )
и с один - ко - многим я тоже разобрался.

правда я использую LINQ2SQLб ведь так хочется гламура.

фишка вся в том у меня, что если делать вот, к примеру, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        private BindingSource bsMaster = new BindingSource();
        private BindingSource bsDetail01 = new BindingSource();
        //...
        DbGridMaster.DataSource = bsMaster;
        DbGridDetail01.DataSource = bsDetail01;
        //...
        //...
        bsMaster.DataSource = northwind.Products;
        bsDetail01.DataSource = bsMaster.DataSource;
        bsDetail01.DataMember = "OrderDetails";
то этот код не работает. а если так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
        private BindingSource bsMaster = new BindingSource();
        private BindingSource bsDetail01 = new BindingSource();
        //...
        DbGridMaster.DataSource = bsMaster;
        DbGridDetail01.DataSource = bsDetail01;
        //...
        //...
        bsMaster.DataSource = northwind.Products;
        bsDetail01.DataSource = DbGridMaster.DataSource;
        bsDetail01.DataMember = "OrderDetails";
то все гуд.

именно поэтому у меня не получается построить многие-ко-многим с использование двух гридов, только при трех (стоит сослаться в bsDetail01.DataSource не на грид - ничего не отображается!):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
            DbGridMaster.DataSource = bsMaster;
            DbGridDetail01.DataSource = bsDetail01;
            DbGridDetail02.DataSource = bsDetail02;

            bsMaster.DataSource = northwind.Products;
            bsDetail01.DataSource = DbGridMaster.DataSource;
            bsDetail01.DataMember = "OrderDetails";
            bsDetail02.DataSource = DbGridDetail01.DataSource;
            bsDetail02.DataMember = "Orders";

в данном случае все отображается, правда информация в DbGridDetail02 меняется только при навигации в DbGridDetail01, а никак в DbGridMaster. На данный момент я написал костыль, который делает выборку в дочерних таблицах при навигации в DbGridMaster, однако я не сдаюсь.

Надеюсь, что есть гламурное решение.
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37203994
mrbrooks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,

кстати попробывал с DataSet при помощи визарда. Один ко многим работает на ура, но вот многие - ко - многим - увы - нет.
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37206547
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mrbrooksCat2,

кстати попробывал с DataSet при помощи визарда. Один ко многим работает на ура, но вот многие - ко - многим - увы - нет.
Работае, работает. Только нужно связи правильно сделать
...
Рейтинг: 0 / 0
Вывод связанных таблиц в два DataGridView
    #37206563
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Cat2,

не дописал

В обе стороны связи и одновременно "включать " только один из двух наборов связей
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вывод связанных таблиц в два DataGridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]