2

我有一个 DataTable 我用来绑定到我的 DevExpress GridView 。

我的 DataTable 是动态的,即 - 有时它可以带来 4 列,有时甚至 20 列。问题是,当我第一次使用具有 20 列的 dataTable 设置我的 GridView 时,它将正确显示,下次如果我DataTable 只有 4 列,我的 GirdView 仍将显示所有 20 列,其值仅在我的 DataTable 当时具有的 4 列中。

我该如何解决这个问题?

附上截图。在此处输入图像描述

这与清除某些内存实例/处理对象有关吗?如果是这样,请帮助使用 DevExpress GridView 的 API。

更新

此代码调用设置数据源

bindingSource1.DataSource = dtBindToGridView; // MyDataTable
gcAnalysisTaskPermission.DataSource = bindingSource1; //My GridView 
bindingSource1.ResetBindings(true); // Reset the BindingSource

谢谢,

曼格什

4

2 回答 2

3

首先尝试重置数据源,如下所示:

grid.DataSource = null;
grid.DataSource = GetData();

如果你有绑定源,这不起作用

打电话gridView.PopulateColumns()

于 2013-05-16T08:19:50.867 回答
2

如果您使用的是BindingSource,请尝试设置ResetBinding()

public void SetData()
{
   //setting the datasource of your binding source
   myBindingSource.DataSource = GetMyDataTable(); 

   //after the datasource has been set, call this.
   //use true, because the metadata has changed
   myBindingSource.ResetBindings(true); 
}

更新

根据DevExpress,您可以尝试调用PopulateColumns

public void SetData()
{
   //setting the datasource of your binding source
   myBindingSource.DataSource = GetMyDataTable(); 

   gridView1.PopulateColumns();
}
于 2013-05-16T07:49:06.240 回答