Откладывание обновления DataGridView при редактировании базового DataTable - PullRequest
9 голосов
/ 15 июля 2009

Если у вас есть DataGridView, который связан с DataView (someDataTable.DefaultView).

.. и ряд изменений выполняется для строк в базовом DataTable из кода.

Можно ли отложить обновление DataGridView до тех пор, пока вы не решите, что вы закончили редактирование строк?

Как таковое, DataGridView обновляется после каждого редактирования, что, если вам не требуется мгновенная обратная связь, является неэффективным и немного зрительным, если вы обновляете много строк в DataTable одну за другой.

1 Ответ

16 голосов
/ 15 июля 2009

Чтобы иметь возможность временно приостановить привязку данных, вы должны поместить BindingSource между вашими DataGridView и DataView. Если для свойства RaiseListChangedEvents BindingSource установлено значение false, об изменениях в базовом источнике DataGridView не сообщается. Вы можете перетащить компонент Bindingsource из панели инструментов в режиме конструктора. Я попытался настроить источники данных через конструктор, но это не сработало, поэтому я сделал это в коде:

bindingSource1.DataSource = someDataTable.DefaultView;
dataGridView1.DataSource = bindingSource1;

Чтобы приостановить привязку данных, просто установите для свойства RaiseListChangedEvents значение false:

bindingSource1.RaiseListChangedEvents = false;

Чтобы возобновить привязку данных, просто установите для RaiseListChangedEvents значение true и сбросьте привязки, чтобы дисплей обновлялся:

bindingSource1.RaiseListChangedEvents = true;
bindingSource1.ResetBindings(false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...