![]() |
|
Модераторы: gambit |
![]()
|
|
| Redsweet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 26.2.2009 Где: Казахстан Репутация: нет Всего: нет |
Есть две связанные таблицы по одному ключевому полю ID.
Допустим первая таблица имеет вид: ID name surname Вторая таблица: ID mesto_obuch Первую таблицу выводим в DataGridView. Как сделать так, чтобы при выделении ячейки мышкой автоматически в другом DataGridView отображались данные из второй таблицы связанные с первой по выделенному мышкой ID? |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
вот так:
Здесь две ключевые строчки, а остальные это я делал для теста. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Redsweet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 26.2.2009 Где: Казахстан Репутация: нет Всего: нет |
-Mikle-, спасибо вам большое за ответ...
Но не могли бы вы его немного пояснить? Например мне совсем не понятна ваша первая ключевая строчка... |
|||
|
||||
| thomas |
|
||||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Redsweet,
Это объявление переменной с именем ds типа DataSet. Добавлено через 4 минуты и 34 секунды Упс, не туда посмотрел.
здесь задается связь между таблицами в ДатаСет по полю id. а вот здесь
указывается что должно отображаться во втором гриде. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||||
|
|||||||
| Redsweet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 26.2.2009 Где: Казахстан Репутация: нет Всего: нет |
Мне не это не понятно! Я имею ввиду что не первая строчка кода, а первая ключевая! Первая ключевая строчка это:
Это сообщение отредактировал(а) Redsweet - 26.4.2009, 12:36 |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
Redsweet, thomas дополнил свой ответ, вы разминулись с ним по времени.
Но я продублирую его ответ чуть шире. В первой строчке задается связь, отношение (Relation) между двумя таблицами в DataSet. Так как DataSet содержит может содержать много таблиц (и связей между ними), то все связи между таблицами располагаются в коллекции DataSet.Relations. Метод Add, соответственно добавляет одну связь. Первый параметр этого метода, это имя этого отношения, второй - ссылка на DataColumn родительского поля, а третий - ссылка на DataColumn дочернего поля. Так как каждый DataColumn содержит ссылку на свой DataTable, то родительская и дочерняя таблица берутся из ссылок на поля (второй и третий параметр). Что касается второй строчки, то это обыкновенная привязка DataGridView к источнику данных. Просто в качестве источника выступает не таблица в DataSet, а отношение между таблицами нашей привязки. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Redsweet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 26.2.2009 Где: Казахстан Репутация: нет Всего: нет |
Что-то я никак не разберусь. Моя ситуация такая: на форме уже есть dataGridView в который уже выводятся данные из таблицы и называется он - diplDataGridView (где dipl - название таблицы). В этой таблице есть поле ID по которому она связывается с другой таблицей. Все связи уже настроены вручную в SQL Server-e. Задача в том, чтобы при щелчке мышью по записи в diplDataGridView, в другом DataGridView выводились связанные данные из другой таблицы. Т.е. связи настраивать не нужно, они уже есть.
При использовании приведенного выше кода Студия ругается на
Это сообщение отредактировал(а) Redsweet - 27.4.2009, 15:08 |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
Redsweet, я же сказал:
GetTable1 и GetTable2 это были мои методы которые генерировали тестовые данные. Они не нужны в вашем коде. В приведенном мной коде, нужно было обратить внимание только на две строчки. Мне, да и кому-либо еще, тяжело писать ответы более конкретно, когда нет ни единой строчки вашего кода. Вот и приходится писать дополнительный код, чтобы продемонстрировать работу ответа. Я даже не знаю, храните ли вы данные в DataSet и делаете ли привязку через DataSource. Давайте так, чтоб быть более конструктивным, приведите здесь ваш код. Иначе мы будет ходить вогруг, да около... -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Redsweet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 26.2.2009 Где: Казахстан Репутация: нет Всего: нет |
-Mikle-, понимаете, мне нечего скинуть. В Студии я делала все не кодом, а настройками и перетаскиваниями. То есть у меня все генерировалось автоматически. У меня есть studDataSet, studTableAdapter, univerTableAdapter, tableAdapterManager, studBindingSource... Есть также два DataGridView. Не знаю, понятно ли я объяснила то что мне нужно.
Я хочу чтобы во второй таблице отображалась информация о месте обучения именно по тому студенту, чье имя (все поле - строка) выделено в первом DataGridView. И кода в проекте у меня почти нет.. Ну разве что строчки, которые сами создались типа:
Я пыталась применить себе именно те две ключевые строчки, которые вы выделили. Но у меня ничего не получилось... |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
Вот это уже что-то. Более ясно что и как.
По шагам: 1. Правый клик по таблице студентов и выбрать Add -> Reletion... (Добваить -> Отношение...) ![]() 2. В открывшемся окне задай такие параметры: ![]() 3. Для первого грида в свойствах выбираем DataSource ![]() 4. В DataMemeber выбираем таблицу студентов ![]() 5. Для второго грида DataSource будет ![]() 6. А вот DataMember нужно вбить ручками (стукая по клавиатуре пальчиком) в таком виде: {ИмяТаблицыСтудентов}{.}{ИмяОтношения} Имя отношения, это то, что ты вбивала во втором шаге. в моем примере это выглядит так: studDataTable.studDataTable_univerDataTable Вот и все! Готово! Запускаем и наслаждаемся! -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Redsweet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 26.2.2009 Где: Казахстан Репутация: нет Всего: нет |
-Mikle-, спасибо большое! Кажется все работает как надо!
![]() thomas, тоже спасибо что не прошли мимо! Это сообщение отредактировал(а) Redsweet - 30.4.2009, 10:13 |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
Не за что. Приходи еще!
Добавлено через 1 минуту и 42 секунды Только желательно сразу формулировать вопрос полноценно с указанием необходимых деталей, а то будет как в этом топике, больше времени ушло на понимание самого вопроса, чем на его решение -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Redsweet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 26.2.2009 Где: Казахстан Репутация: нет Всего: нет |
Подскажите пожалуйста, что делать в случае если связь двух нужных таблиц идет через третью-вспомогательную. То есть теперь будут использоваться таблицы stud, dipl и conn.
![]() Необходимо чтобы из comboBox выбирался студент, а в dataGridView отображались данные таблицы conn по этому студенту (связь через studID и diplID). Что писать в таком случае в DataMember? Пробовала даже такой вариант: (stud.FK_dipl_stud).FK_conn_dipl Это сообщение отредактировал(а) Redsweet - 19.5.2009, 23:03 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |