DevExpress网格视图查询 - 将DataSource属性设置为DataTable但显示的列数不正确

时间:2013-05-16 07:25:03

标签: winforms data-binding datatable devexpress

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

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

如何解决此问题?

附件是ScreenShot。enter image description here

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

更新

此代码调用设置数据源

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

谢谢,

Mangesh

2 个答案:

答案 0 :(得分:3)

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

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

如果你有约束力,这不起作用

致电gridView.PopulateColumns()

答案 1 :(得分: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();
}