DataGridView数据源未更新
本文关键字:更新 数据源 DataGridView | 更新日期: 2023-09-27 18:29:26
我正在使用Winforms DevExpress,并且我正在将DataTable绑定到工作正常的DataGridView。我遇到的问题是,我有一些函数将构建一个新的DataTable对象,该对象与原始对象分离,需要替换绑定到DataGridView的原始DataTable。
DataTable originalTable = new DataTable("OriginalTable");
//Populate originalTable
myDataGridControl.DataSource = originalTable;
上面的代码一切都很好,但下面的代码创建了一个新的DataTable,需要设置为myDataGridControl的DataSource。
DataTable newTable = new DataTable("NewTable");
//Populate newTable
//Set newTable as the DataSource for myDataGridControl
myDataGridControl.DataSource = newTable;
我已经尝试了几种不同的尝试来实现这一点,例如调用RefreshDataSource()、Refresh(),将DataSource设置为null。我还没开始工作。我该怎么做?
尝试使用BindingSource
,如下所示:
DataTable sourceTable = new DataTable("OriginalTable");
BindingSource source = new BindingSource();
source.DataSource = sourceTable;
myDataGridControl.Datasource = source;
现在,当您想要重新绑定时,更新sourceTable
变量,如下所示:
sourceTable = new DataTable("NewTable");
// If the structure of `OriginalTable` and `NewTable` are the same, then do this:
source.ResetBindings(false);
// If the structure of `OriginalTable` and `NewTable` are different, then do this:
source.ResetBindinds(true);
注意:有关ResetBindings()
的详细信息,请阅读BindingSource.ResetBindings方法。
您尝试过以下组合吗?:
myDataGridControl.DataSource = originalTable;
myDataGridControl.DataSource = null;
myDataGridControl.DataSource = newTable;
根据我的经验,将DataSource
设置为null
,然后设置为第二个源就可以了。
如果有人在尝试其他建议后遇到问题,下面对GridControl.MainView属性上的PopulateColumes()的调用为我解决了问题。
例如:
myDataGridControl.MainView.PopulateColumns();
这也可以从下面的DevExpress文章中参考。http://www.devexpress.com/Support/Center/Question/Details/Q362978
这是一个古老的话题,但由于它困扰了我,我决定分享我的经验。。。绑定源对我来说不起作用,Datagridview没有"MainView"变量。
我怀疑问题发生在运行排序命令之后
MyDataTable.DefaultView.Sort = "Column Asc";
MyDataTable = MyDataTable.DefaultView.ToTable();
我的解决方案是在执行操作后再次重新绑定:
myDataGrid.DataSource = MyDataTable;