XtraGrid在更新其数据源后未刷新

时间:2012-03-16 04:52:33

标签: winforms data-binding devexpress xtragrid

我在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();
}

我在编辑表单中所做的更改仍然存在于数据库中,但我尝试了几种尝试让网格更新的方法,并且在我重新启动应用程序之前它一直顽固地拒绝。我做错了什么?

3 个答案:

答案 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);

它应该刷新绑定源,从而刷新网格