| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > DataGridView и привязка данных |
| Автор: shell14 4.5.2007, 03:58 |
| Суть проблемы: таблица их БД отображается с помощью DataGridView, хочу чтобы при добавлении новой строки или изменении каких то данных, после нажатия на кнопку сохранить, вносились изменения в БД. Есть решение, которого я хочу добиться (см картинку), его генерит студия 2005, при переносе таблицы их БД на форму. Но там слишком много всего (она полностью изучает БД и генерит все связи, очень много и громоздко). Хочеться найти хороший мануал по DataGridView и привязке данных. Никто не подскажет? Просто не могу понять, решать вопрос именно о привязке данных? или может быть проще получить изменения сделанные в DataGridView и просто написать обработчик для внесения изменений в БД? Но хотелось бы чтобы работало именно как в примере. Как этого можно добиться? Еще может кто подскажет грамотное решение, как отобразиь в DataGridView двумерный массив? не хочеться класс писать, потому что просто массив даблов. |
| Автор: Papirus 4.5.2007, 10:03 | ||||
У DataGridView есть свойство DataSource, которому можно назначить таблицу. Примерно так:
Если надо на C# могу и в этом виде (просто VB привычнее) Добавлено через 9 минут и 9 секунд Можно далее действовать разными способам - создать датаадаптер и прописать свой код обновления данных - получать в отдельную таблицу изменения и обрабатывать построчно. Если tbl объявлена на уровне модуля, то
|
| Автор: shell14 4.5.2007, 12:13 |
| Ну да про DataSource я в курсе. Я делал примерно также, только брал DataSet, и заполнял его через SqlDataAdapter Потом этот датасет подсовываю DataGridView.DataSource и он все отображает. А вот можно про адаптер поподрообнее? Т.е. все изменения получать через него? Его надо как то привязывать? Или я вообще не в ту область лезу? так понимаю что можно не использовать привязку данных напрямую, а просто получать изменения и самому их обрабатывать? |
| Автор: mr.DUDA 5.5.2007, 18:43 |
| Адаптер - только для получения датасета из БД или применения изменений датасета на базу данных. Если в приложении надо получить изменения, произошедшие с набором данных - дёргаем dataSet.GetChanges(). |
| Автор: darkness 7.5.2007, 06:41 | ||||
| По сабжу. поправьте где я ошибаюсь: имеем примерно след код:
т.к. DataSet GridView это классы, представляющие из себя ссылочные типы следовательно gD1.DataSource ссылается туда же что ds.Tables["Studi"].... и любое изменение пользователем данных на Гриде отражается и на самой таблице... Щёлкаем кнопку "сохранить" для вступления изменений в силу:
загвоздка у меня в том, как обновить саму БД.... Предположим мы исправили две строки и одну добавили, как получить доступ именно к тем элементам которые были изменены (Добавлены), чтобы уже на основании этого форимровать запросы UPDATE INSERT ??? Вообщем немного запутался... |
| Автор: mr.DUDA 7.5.2007, 09:08 | ||
Полученный из GetChanges датасет отдаём адаптеру в метод Update:
|