gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:00:38 24 4
gpt4 key购买 nike

这里的情况非常奇怪:我使用 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 - 无法让 DataGridView 刷新 Linq to SQL (WinForm),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1901716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com