这里的情况非常奇怪:我正在使用 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()
,我尝试将 DataSource 更改为 NULL 并再次更改回来(所有建议均来自此处的类似帖子) ....都不起作用。网格刷新的唯一时间是我重新启动应用程序。
我一定错过了一些基本的东西,但我完全被难住了,我的同事也是如此。
有任何想法吗?
谢谢!
最佳答案
最简单的方法是使用 BindingSource。创建 BindingSource 的实例,以将其初始化为数据查询,然后将 BindingSource 分配给 UsersGridView。
BindingSource 将处理更新等。可以捕获多个事件以进行自定义管理。
This link gives an example of using a BindingSource
编辑:我的第一篇文章假设使用 Webforms 而不是 WinForms。
关于linq-to-sql - 无法通过 Linq to SQL (WinForm) 刷新 DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1901716/