Я работаю над программой, которая использует NHibernate для связи с SQL Server и отображает таблицу в DataGridView.
Вот как я инициализирую свой источник данных:
private void UpdateDatabaseBindings()
{
if (InvokeRequired)
{
InvokeUI(UpdateDatabaseBindings);
return;
}
using (var session = NHibernateHelper.OpenSession())
{
dbPeople.DataSource = session.QueryOver<Person>().List();
}
}
И когда форма открыта, она работает. Данные отображаются правильно:
Однако, когда я обновляю базу данных вручную (используя SSMS), данные не обновляются (естественно). Итак, я создал Timer
, который запускается каждую секунду и запускает UpdateDatabaseBindings()
, поэтому данные извлекаются снова и пользовательский интерфейс обновляется.
Однако это «сбрасывает» DataGridView с некоторыми неприятными побочными эффектами: выделение теряется, любой редактируемый текст отменяется и прокрутка также сбрасывается.
Есть ли способ обновить DataGridView без сброса источника данных?