Как связать 2 datagridview c
Перейти к содержимому

Как связать 2 datagridview c

Как связать 2 datagridview c

Допустим есть 2 таблицы которые отображаются в DataGridView (пусть Orders и Details). Как связать DataGridView так чтобы при выборе строки в Orders выводились Details для этого заказа? С обычным DataGrid получалось, а с datagridview не могу разобраться чего-то. Буду благодарен за помощь.

От: _FRED_ @ViIvanov
Дата: 27.02.06 15:53
Оценка:

Здравствуйте, Evgeniy_L, Вы писали:

E_L>Допустим есть 2 таблицы которые отображаются в DataGridView (пусть Orders и Details). Как связать DataGridView так чтобы при выборе строки в Orders выводились Details для этого заказа? С обычным DataGrid получалось, а с datagridview не могу разобраться чего-то. Буду благодарен за помощь.

Смысл такой. У обоих гридов должен быть один и тот же DataSource, отличаться должны только DataMember и отличаться следуюжим образом: DataMember второго, details-грида, должен «добавлять» к DataMember первого («master») грида имя связи — DataRelation. Например, первый грид связан с датасетом:

Или вот так, если первый грид связан с таблицей:

От: Evgeniy_L
Дата: 27.02.06 16:03
Оценка:

К сожалению не сработало. Хотя в DetailsGrid теперь вводятся данные, но они не изменяються при выборе разных значений в MasterGrid.
Пробовал еще через BindingSource, но с ним вообще не работает.

От: Evgeniy_L
Дата: 27.02.06 16:06
Оценка:
От: _FRED_ @ViIvanov
Дата: 27.02.06 16:06
Оценка:

Здравствуйте, Evgeniy_L, Вы писали:

E_L>К сожалению не сработало. Хотя в DetailsGrid теперь вводятся данные, но они не изменяються при выборе разных значений в MasterGrid.
E_L>Пробовал еще через BindingSource, но с ним вообще не работает.

Если код такой же, как и у меня, то должно работать. Перед отправкой я проверил. Ищи, в чём отличия между нашими вариантами. Например, оба грида на одной форме?

От: _FRED_ @ViIvanov
Дата: 27.02.06 16:09
Оценка:

Здравствуйте, Evgeniy_L, Вы писали:

E_L>Пробовал еще через BindingSource, но с ним вообще не работает.

С BindingSource аккуратнее, например, посмотри как дизайнер по-умолчанию строит Details-грид (есть такая фича). Дело в том, что у BindingSource внутри свой собственный CurrencyManager.

От: Evgeniy_L
Дата: 27.02.06 16:20
Оценка:

Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, Evgeniy_L, Вы писали:

E_L>>Пробовал еще через BindingSource, но с ним вообще не работает.

_FR>С BindingSource аккуратнее, например, посмотри как дизайнер по-умолчанию строит Details-грид (есть такая фича). Дело в том, что у BindingSource внутри свой собственный CurrencyManager.

Пошаговое руководство. Создание главного и подчиненного представлений данных с использованием двух элементов управления DataGridView в Windows Forms

Одним из наиболее распространенных сценариев использования элемента управления DataGridView является главное и подчиненное представления данных, в которых отображается связь «родитель-потомок» между двумя таблицами базы данных. Выбор строк в главной таблице приводит к обновлению таблицы сведений с учетом соответствующих дочерних данных.

Реализовать главное и подчиненное представления данных можно с легкостью с помощью взаимодействия между элементом управления DataGridView и компонентом BindingSource. В этом пошаговом руководстве вы создадите форму с помощью двух элементов управления DataGridView и двух компонентов BindingSource. В форме будут отображаться две связанные таблицы в образце базы данных Northwind SQL Server: Customers и Orders . По завершении у вас будет форма, где отображаются все клиенты в базе данных в главном представлении данных DataGridView и все заказы для выбранного клиента в подчиненном представлении данных DataGridView.

Предварительные требования

Для выполнения данного пошагового руководства требуется:

  • доступ к серверу SQL Server с установленным образцом базы данных Northwind.

Создание формы

Создание главного и подчиненного представлений данных

Создайте класс, производный от Form и содержащий два элемента управления DataGridView и два компонента BindingSource. Следующий код обеспечивает базовую инициализацию формы и включает метод Main . Если для создания формы используется конструктор Visual Studio, можно использовать сгенерированный конструктором код вместо этого кода, но обязательно используйте имена, показанные в объявлениях переменных.

Реализуйте метод в определении класса формы для обработки сведений о подключении к базе данных. В этом примере используется метод GetData , который заполняет объект DataSet, добавляет объект DataRelation в набор данных и привязывает компоненты BindingSource. Убедитесь, что переменной connectionString присвоено значение, соответствующее базе данных.

Хранение конфиденциальных сведений (например, пароля) в строке подключения может повлиять на безопасность приложения. Использование проверки подлинности Windows (также называемой встроенными средствами безопасности) — более безопасный способ управления доступом к базе данных. Дополнительные сведения см. в разделе Защита сведений о подключении.

Реализуйте обработчик события формы Load, который привязывает элементы управления DataGridView к компонентам BindingSource и вызывает метод GetData . В следующем примере содержится код, который изменяет размер столбцов DataGridView в соответствии с отображаемыми данными.

Тестирование приложения

Теперь можно протестировать форму, чтобы убедиться, что она работает должным образом.

Проверка формы

Скомпилируйте и запустите приложение.

Вы увидите два элемента управления DataGridView, один над другим. Сверху находятся клиенты из таблицы Northwind Customers , а внизу — Orders , соответствующие выбранному клиенту. При выборе разных строк в верхнем компоненте DataGridView содержимое нижнего компонента DataGridView изменяется соответствующим образом.

Next Steps

Это приложение позволяет получить базовое представление о возможностях элемента управления DataGridView. Внешний вид и поведение элемента управления DataGridView можно настроить несколькими способами:

Проверьте входные данные пользователя для элемента управления DataGridView. Дополнительные сведения см. в статье Пошаговое руководство. Проверка данных элемента управления DataGridView в Windows Forms.

Обработка очень больших наборов данных с помощью виртуального режима. Дополнительные сведения см. в статье Пошаговое руководство. Реализация виртуального режима для элемента управления DataGridView в Windows Forms.

Как связать две таблицы с помощью DataGridViewComboBoxColumn?

У меня есть две таблицы Timetable и Services связанные по ID_Service. Timetable представлена как DataGrid. Мне нужно чтобы в Timetable появился новый столбец вида DataGridViewComboBoxColumn, который бы заполнялся значениями из столбца Name_service таблицы Services. Причем этот столбец должен согласовываться с ID_Service, т.е. в выпадающем комбобоксе я выбираю значение, и согласно этому значению в столбце ID_Service устанавливается айди. Я совсем новичок в этом, подскажите пожалуйста, как можно такое реализовать

введите сюда описание изображения

введите сюда описание изображения

Я сделал полный пример приложения. Его можно скопировать и запустить.

В примере два DataTable заполняются вручную прямо в коде. У вас они должны заполняться из БД.

Создаются два BindingSource . Каждый привязывается к своей таблице. Один из них привязывается к DataGridView , второй — к столбцу DataGridViewComboBoxColumn .

Остаётся лишь правильно задать свойства DataPropertyName , DisplayMember , ValueMember — именно они важны для работы кода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *