2011-03-22 40 views
0

我的gridview基於兩個表關係 - 表A與列大小(int)和表B與列人類與值(男人,女人)列。我可以創建過濾器A.Size =「100」和B.Human =「man」,當我選擇sourse作爲我的視圖時,我想要這個過濾器A - 當我排序看不到表B中有記錄的值時「女人」,當我選擇B查看sourse當我篩選 - 不會看到在A中有值不同於「100」的記錄。我可以創建這樣的過濾器嗎?如果是 - 在devExpress的組件之間,這個過濾器視覺的適當表示是什麼?我可以用我的網格直接過濾嗎?gridviev過濾器由兩個不同的表格

回答

1

據我所知,你的GridControl綁定到一個包含兩個表的數據源。由於過濾器應用於GridView,並且每個GridView只能綁定到單個表,因此此過濾條件不能應用於GridView。所以,你有兩種解決方案。首先,我認爲最好的方法是將此過濾器應用到網格的基礎數據源。其次是基於GridView過濾的解決方案。在這種情況下,您應該在主GridView對象和詳細GridView對象上應用單獨的過濾器。即主GRIDVIEW應具有以下過濾條件:

gridView1.ActiveFilterCriteria = new BinaryOperator("Size", 100); 

要應用一個過濾條件的細節的GridView,手柄主GridView的MasterRowExpanded事件以獲得詳細的GridView對象和應用過濾器條件:

private void gridView1_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e) { 
    GridView detailGridView = (sender as GridView).GetDetailView(e.RowHandle, e.RelationIndex); 
    detailGridView.ActiveFilterCriteria = new BinaryOperator("Human", "man"); 
} 

注意:第一個解決方案是最好的。