2011-12-10 34 views
0

我有一個Devexpress.XtraGrid.GridControl,我已將DataSource設置爲DataTable。我還有其他幾個控件,其數據綁定爲相同的DataTable。這可以很好地發揮作用,當GridView的選定行發生更改時,控件將反映更改。Devexpress:清除完全過濾的GridControl的綁定控件

但是,在GridControlGridView我已經設置了ActiveFilter.NonColumnFilter。此過濾器隨着表單的使用而變化。偶爾,過濾器被設置爲使得GridControl中沒有行顯示的東西。發生這種情況時,綁定到DataTable的控件不會清除,而是顯示最後一個選定行的數據。

有沒有簡單的事情我可以做,以告訴綁定控件清除,還是我需要手動通過它們並清除它們?

我以前使用過一個DataTable,它實際上添加和刪除了適合我過濾內容的行。如果表格變得清晰,那麼所有綁定控件都可以。所以我假設它是可能的。

回答

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";