linq-to-sql - 无法通过 Linq to SQL (WinForm) 刷新 DataGridView

标签 linq-to-sql datagridview c#-3.0 refresh

这里的情况非常奇怪:我正在使用 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/

相关文章:

c# - 如何在 Entity Framework 中查询具有 ID 数组的多对多关系

c# - 如何在设计时显示 datagridview 行和项目

c# - 如何将C# datetimeOffset 转换为指定格式

c#-3.0 - C# 中私有(private)无参数构造函数的用途是什么

c# - 我是否正确使用 DataContext.Dispose() ?

c# - LINQ 到 SQL : Select count rows for each date in a provided range?

vb.net - 使用 GridView 和 LINQ 进行排序的最佳方法是什么?

c# - 检查滚动条是否在数据 GridView 中可见

c# - DataGridView AutoGenerateColumns以某种方式设置为true

c# - 具有重复键的字典