XtraGrid 在更新其数据源后不刷新
Posted
技术标签:
【中文标题】XtraGrid 在更新其数据源后不刷新【英文标题】:XtraGrid not refreshing after updates to its data source 【发布时间】:2012-04-01 16:33:15 【问题描述】:我在 windows 窗体上有一个 XtraGrid 控件,绑定到如下对象集:
clientListBindingSource.DataSource = ObjectContext.Clients;
其中 ObjectContext 是一个普通的 EF 上下文。要编辑客户端,我将所选行的 Client
对象传递给我的编辑表单,并按如下方式保存更改:
var rows = mainView.GetSelectedRows();
var editClient = ((Client)mainView.GetRow(rows[0]));
var editForm = new ClientDetailForm
EditClient = editClient
;
var result = editForm.ShowDialog();
if (result == DialogResult.OK)
ObjectContext.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
clientGrid.RefreshDataSource();
我在编辑表单中所做的更改会保留在数据库中,但我尝试了几种方法来尝试更新网格,但它顽固地拒绝,直到我重新启动应用程序。我做错了什么?
【问题讨论】:
【参考方案1】:我建议你试试这个
clientListBindingSource.ResetBindings(False);
应该刷新绑定源从而刷新网格
【讨论】:
【参考方案2】:我发现一个调用
Grid.RefreshDataSource();
如果您通过如下代码绑定 DataSource,则可以按预期工作:
IndicationSummaryGrid.DataBindings.Add("DataSource", Presenter, "SummaryDetailList", true, DataSourceUpdateMode.OnPropertyChanged);
其中“DataSource”是要绑定的网格属性,Presenter 是要绑定的对象,SummaryDetailList 是属于 Presenter 的对象列表。
【讨论】:
在我们的一个项目中,这不起作用(它是一个带有子列的网格。AddRemove 通常可以工作,除了 - 用户单击要排序的东西 - 之后 gridview 没有进一步更新......)【参考方案3】:在进行如下更改后尝试重置您的数据源:
yourGrid.DataSource = null; // you might not need this, but it's my practice
yourGrid.DataSource = data_source;
【讨论】:
这行得通,谢谢,但对我来说有点脑死,包括RefreshDataSource
方法在内的任何其他方法都行不通。 DevExpress 控件似乎有点落后于 ED 数据源。
在我看来,gridview 除了显示数据之外什么也不做。程序员应该告诉它数据源已更改,以便它可以重新显示数据。不知道DevExpress有没有这个功能,还是手动做吧。以上是关于XtraGrid 在更新其数据源后不刷新的主要内容,如果未能解决你的问题,请参考以下文章