Очень странная ситуация: я использую L2S для заполнения DataGridView.
Код следует:
private void RefreshUserGrid()
{
var UserQuery = from userRecord in this.DataContext.tblUsers
orderby userRecord.DisplayName
select userRecord;
UsersGridView.DataSource = UserQuery;
//I have also tried
//this.UserBindingSource.DataSource = UserQuery;
//UsersGridView.Datasource = UserBindingSource;
UsersGridView.Columns[0].Visible = false;
}
Всякий раз, когда я использую L2S для добавления / удаления записей из базы данных, GridView прекрасно обновляется.
Однако, если кто-то редактирует сетку и делает ошибку, я хочу, чтобы он мог нажать кнопку обновления и чтобы его ошибки были стерты при перезагрузке из источника данных.
На всю жизнь я не могу заставить его работать.
Код, который я сейчас использую на кнопке обновления, выглядит так:
private void button1_Click(object sender, EventArgs e)
{
this.DataContext.Refresh(RefreshMode.OverwriteCurrentValues);
RefreshUserGrid();
}
Но проклятый GridView остается неизменным. Все, что происходит - выбранная строка становится невыбранной.
Я пробовал .Refresh()
, .Invalidate()
, я пытался изменить источник данных на NULL и обратно (все предложения из похожих постов здесь) .... ни один из них не работает. Единственный раз, когда Grid обновляется, это если я перезапускаю приложение.
Я, должно быть, упускаю что-то фундаментальное, но я в полном недоумении, как и мои коллеги.
Есть идеи?
Спасибо!