| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Отображение связанных таблиц |
| Автор: Freak_FB 19.12.2007, 19:01 |
| Проблема, вроде бы, поднималась, но я разобраться самостоятельно не смог. Банальная задача: есть база pubs2002.mdb (из стандартной поставки SQL Server, кажется). Там есть таблица с наименованиями издательств, и есть таблица с наименованиями книг, а у книг есть ссылка на издательство. Делаю DataSet (всё в дизайнере), 2 адаптера на каждую из таблиц. Заполняю адаптеры из DataSet. Далее: есть два DataGridView. В первом планирую отображать список издательств, во втором - список книг, выпущеных этим издательством. То есть при выборе издательства список книг обновляется. Какие действия нужно выполнить, чтобы обеспечить эту функциональность? http://forum.vingrad.ru/topic-125261.html обсуждался такой вопрос и говорилось, что нужно использовать CurrencyManager и Binding. Заранее спасибо за ответ. |
| Автор: D_F_V 20.12.2007, 09:01 | ||||
| как вариант... Бизнес логика в отдельном классе..
Представление...
Особо не стал расписывать.. все по минимуму и по быстрому.. чисто под описанную задачу... |
| Автор: thomas 20.12.2007, 09:20 | ||
| Freak_FB, Приветствую.
По идее если таблицы связаны в БД, то и в ДС они отобразяться связанными. Если этого нет, по какой либо причине, то просто в дизайнере ДС добавь связь между таблицами. Второе, раз работаешь в дизайнере то, когда из окна DataSourece перетаскиваешь на форму "родительскую" таблицу кликни плюсик рядом сней, увидишь список её полеё и "дочернюю" табличку тоже. Порядок действий: для родительской таблицы выбираешь вид - детальный и тащишь ее на форму, получаешь лабелы с текстбоксами + студия сама поместит навигатор на форму и добавит BindingSource и tableAdapter. Потом выстави табличное представление у дочерней таблицы и перетащи ее на форму. Получишь DataGridView + BindingSource и tableAdapter. Если стартанешь приложение то увидишь в боксах своих аторов, в гриде список их книг. Навигация через навигатор. Надеюсь, более мение понятно написал. Студент я, а не учитель. Успехов. |
| Автор: Freak_FB 28.12.2007, 14:38 |
| Ну что тут сказать. Сделал специально базу. Прилагаю её на всякий случай. Создал с нуля проект. Сделал там окошко DataSources. Добавил в те DataSources себе базу. Выделил обе таблицы в ней. Автоматом связи не перенесло - ладно. Сделал ручками. Поперетягивал из DataSources обе таблицы. Отобразило в DataGridView. Запустил - никаких положительных результатов - в таблице с издательствами - все издательства, и в табличке с книжками - тоже ВСЕ книжки. Может быть это не так просто визуально устанавливается такое поведение, может код какой добавить? Просто не попадалось хорошей нкижки по базам данных, вот и затруняюсь. |
| Автор: mr.DUDA 29.12.2007, 11:40 |
Попробовал сам. Базу данных добавил в Data Sources (кстати связь по таблицам создаётся автоматически), перетянул таблицы на форму, как показано на скриншоте. После запуска всё работает как положено: выбирая строку в верхнем датагриде, в нижнем отображаются только книги выбранного издателя.![]() |