我在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();
}
我在编辑表单中所做的更改仍然存在于数据库中,但我尝试了几种尝试让网格更新的方法,并且在我重新启动应用程序之前它一直顽固地拒绝。我做错了什么?
答案 0 :(得分:6)
尝试在进行以下更改后重置数据源:
yourGrid.DataSource = null; // you might not need this, but it's my practice
yourGrid.DataSource = data_source;
答案 1 :(得分:2)
我发现打电话给
Grid.RefreshDataSource();
如果您通过以下代码绑定DataSource,按预期工作:
IndicationSummaryGrid.DataBindings.Add("DataSource", Presenter, "SummaryDetailList", true, DataSourceUpdateMode.OnPropertyChanged);
“DataSource”是绑定的网格属性,Presenter是绑定的对象,SummaryDetailList是属于Presenter的对象列表。
答案 2 :(得分:0)
我建议你试试这个
clientListBindingSource.ResetBindings(False);
它应该刷新绑定源,从而刷新网格