我有Devexpress.XtraGrid.GridControl
我已将DataSource
设置为DataTable
。我还有几个其他控件具有相同的DataTable
数据绑定。这很好用,以便当GridView
的选定行发生更改时,控件会反映更改。
但是,在GridControl
GridView
我设置了ActiveFilter.NonColumnFilter
。此过滤器在使用表单时更改。有时,过滤器设置为不会在GridControl
中显示任何行的内容。发生这种情况时,绑定到DataTable
的控件不会清除,而是显示最后一个选定行的数据。
我可以做些简单的事情来告诉绑定控件清除,还是我需要手动完成它们并清除它们?
我之前使用了DataTable
实际添加和删除了与我过滤的内容相对应的行。如果表格变得清晰,那么所有绑定的控件也都可以。所以我认为这是可能的。
答案 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";