Как постоянно обновлять DataGridView при обновлении базы данных - PullRequest
0 голосов
/ 05 мая 2018

Я работаю над программой, которая использует NHibernate для связи с SQL Server и отображает таблицу в DataGridView.

Вот как я инициализирую свой источник данных:

private void UpdateDatabaseBindings()
{
    if (InvokeRequired)
    {
        InvokeUI(UpdateDatabaseBindings);
        return;
    }

    using (var session = NHibernateHelper.OpenSession())
    {
        dbPeople.DataSource = session.QueryOver<Person>().List();
    }
}

И когда форма открыта, она работает. Данные отображаются правильно:

It works correctly on open.

Однако, когда я обновляю базу данных вручную (используя SSMS), данные не обновляются (естественно). Итак, я создал Timer, который запускается каждую секунду и запускает UpdateDatabaseBindings(), поэтому данные извлекаются снова и пользовательский интерфейс обновляется.
Однако это «сбрасывает» DataGridView с некоторыми неприятными побочными эффектами: выделение теряется, любой редактируемый текст отменяется и прокрутка также сбрасывается.

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

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