Страница: 1 |
Страница: 1 |
Вопрос: И снова про DataGrid...
Добавлено: 07.01.06 17:07
Автор вопроса: Nio | Web-сайт:
Слышал, что DataGrid позволяет полностью управлять данными в таблицах... Как это сделать? Т.е, чтобы при изменении ячейки автоматически менялось значение в базе данных.
Подключается всё c использованием OleDbConnection, DataAdapter и DataSet.
Ещё вопрос: как отследить событие изменения значения в ячейке? В нормальном VB у грида имеется событие AfterUpdate, здесь его почему-то нет...
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 07.01.06 17:35
В нормальном VB у грида имеется событие AfterUpdate, здесь его
почему-то нет...
События DataTable.RowChanging и DataTable.RowChanged.
Для сохранения изменений в БД используйте DataAdapter.Update.
Номер ответа: 2
Автор ответа:
Nio
Вопросов: 15
Ответов: 115
Web-сайт:
Профиль | | #2
Добавлено: 07.01.06 18:02
Секундочку, а где там DataTable? Я не использую этого объекта...
Номер ответа: 3
Автор ответа:
Nio
Вопросов: 15
Ответов: 115
Web-сайт:
Профиль | | #3
Добавлено: 07.01.06 18:15
Пока вешаю DataAdapter.Update на событие DataGrig.CurrentCellChanged, но это как-то неправильно... Дело в том, что при изменении одной ячейки должна пересчитаться другая. Как изменить ячейку, я знаю, а вот как поймать событие изменения...
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 07.01.06 19:15
DataTable в коллекции DataSet.Tables.
Номер ответа: 5
Автор ответа:
Nio
Вопросов: 15
Ответов: 115
Web-сайт:
Профиль | | #5
Добавлено: 07.01.06 20:51
Так... А как добраться до этого объекта?
Может, напишите что-нибудь в роде
Private Sub DataSеt1.xxxx.xxx_xxx (xxx as yyy)handles zzzz? Или дадите ссылочку, где об этом можно почитать?
К счастью, при нажатии "Enter" в DataGrid происходит событие CurrentCellChanged (переход на следующую ячейку). Поэтому, если не разберусь, оставлю всю процедуру расчёта/обновления на нём.
Вот кстати, минус ".NET": старые компоненты (тот же DataGrid) имели много полезных событий (AfterUpdate, например), в новой же версии эти события исчезли... а без них - как без рук... А в Delphi .NET все старые свойства и события, как ни странно, остались... И ADO "по-старому" работать не перестало.
Номер ответа: 6
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #6
Добавлено: 07.01.06 21:05
Ничего не исчезло. Только усовершенствовалось. Надо только уметь это
использовать. И вникнуть в модель ADO .NET
Насчет DataTable.. Если DataSet нетипизированный, то DataTable можно
добыть из коллекции Tables:
Dim DT As DataTable = DS.Tables("Name"
Если типизированный, то видимо так:
Dim DT As DataTable = DS.Name
Хотя не уверен. Сам типизированными датасетами не пользуюсь, т.к.
считаю их функциональность излишней.