Devexpress:清除完全过滤的GridControl的绑定控件

时间:2011-12-10 00:59:49

标签: .net winforms devexpress xtragrid

我有Devexpress.XtraGrid.GridControl我已将DataSource设置为DataTable。我还有几个其他控件具有相同的DataTable数据绑定。这很好用,以便当GridView的选定行发生更改时,控件会反映更改。

但是,在GridControl GridView我设置了ActiveFilter.NonColumnFilter。此过滤器在使用表单时更改。有时,过滤器设置为不会在GridControl中显示任何行的内容。发生这种情况时,绑定到DataTable的控件不会清除,而是显示最后一个选定行的数据。

我可以做些简单的事情来告诉绑定控件清除,还是我需要手动完成它们并清除它们?

我之前使用了DataTable实际添加和删除了与我过滤的内容相对应的行。如果表格变得清晰,那么所有绑定的控件也都可以。所以我认为这是可能的。

1 个答案:

答案 0 :(得分:0)

我就此问题与DevExpress联系并收到了response

  

感谢您的提问。当网格被完全过滤并且不包含任何行时,它无法在绑定源中设置当前项。

     

要解决此问题,我建议您过滤数据源级别的数据。

使用此信息,我使用GridView.ActiveFilter.NonColumnFilter更改了我的过滤需求,而是使用了DataTable.DefaultView.RowFilter。这似乎解决了我的问题。

这与他们给我的例子不同:

BindingSource bs = new BindingSource();
DataView dv = new DataView();

DataTable dt = CreateTable(10);
dv = new DataView(dt);
bs.DataSource = dv;

gridControl1.DataSource = bs;
textEdit1.DataBindings.Add("EditValue",bs,"Name");
textEdit2.DataBindings.Add("EditValue", bs, "ID");

然后您可以调用它来设置过滤器:

   dv.RowFilter = "ID = 50";