Обновить DataGridView, привязанный к DataTable - PullRequest
0 голосов
/ 22 марта 2012

Простите за этот, казалось бы, очевидный вопрос, но мои поиски не нашли ответа.

У меня есть DataGridView, связанный с DataTable.Хотя все строки отображаются в сетке, таблица, представленная источником данных сетки, не обновляется после изменения значений в одном или нескольких столбцах DataGridView.И таблица, и таблица содержат первичный ключ.Что мне здесь не хватает?Нужно ли что-то делать в событии RowValidated?

    dgvCriticalContacts.AutoGenerateColumns = False
    Dim ccRs As DataTable = Common.OpenRecordset("SELECT * FROM PhoneList")
    dgvCriticalContacts.DataSource = ccRs

1 Ответ

1 голос
/ 22 марта 2012

A DataGridView не имеет возможности автоматически обновлять базу данных, из которой вы получаете информацию.Хотя вы можете использовать DataTable для предоставления DataGridView источника данных, он также не имеет возможности обновлять себя обратно в базу данных.

Однако .Net Framework имеет TableAdapter (http://msdn.microsoft.com/en-us/library/bz9tthwx%28v=vs.90%29.aspx, 3.5 и более ранние версии) или DataAdapter (http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter%28v=vs.90%29.aspx, Все версии), которые могут выполнять эти функции.

Мой личный опыт показывает, что эти адаптеры очень быстро вызывают больше проблем, чем решают, если это что-то более простая структура данных.Если это что-то более сложное, вам лучше создать класс для ваших строк и сделать BindingList (или что-то подобное), чтобы DataGridView мог их отобразить.Вам придется реализовать свои собственные отслеживания изменений и операторы CRUD, но это того стоит, и, вероятно, в долгосрочной перспективе это вызовет меньше головной боли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...