說我有一個Infragistic UltraGrid
列Foo和酒吧。是否可以過濾表格,以便只顯示Foo和Bar不等於的行?有沒有一種方法可以根據2列的值過濾UltraGrid?
舉例來說,如果我有這樣的數據:
Foo Bar
--------
0.1 0.1
0.1 0.2
0.2 0.2
過濾器將隱藏在第一和第三行。
說我有一個Infragistic UltraGrid
列Foo和酒吧。是否可以過濾表格,以便只顯示Foo和Bar不等於的行?有沒有一種方法可以根據2列的值過濾UltraGrid?
舉例來說,如果我有這樣的數據:
Foo Bar
--------
0.1 0.1
0.1 0.2
0.2 0.2
過濾器將隱藏在第一和第三行。
這是simplier似乎比我相信你不必創建額外的列或東西:
UltraGridColumn fooColumn = Grid.DisplayLayout.Bands[0].Columns["Foo"];
UltraGridColumn barColumn = Grid.DisplayLayout.Bands[0].Columns["Bar"];
ColumnFilter fooColumnFilter = fooColumn.Band.ColumnFilters[fooColumn];
fooColumnFilter.ClearFilterConditions();
fooColumnFilter.FilterConditions.Add(FilterComparisionOperator.NotEquals, barColumn);
謝謝,這工作正常! – zneak
嘿,感謝您的解決方案。你碰巧知道這是否也可以在設計者中完成? –
你應該能夠從網格設計者那裏做到這一點;
[Foo]!=[Bar]
爲數據源創建一個新的布爾列。DisplayLayout.Override.RowFilterMode = RowFilterMode.AllRowsInBand
。grid.DisplayLayout.Band[].ColumnFilters
中,將新的FilterLogicalOperator.And
與新列的FilterConditions.Add(FilterComparisionOperator.Equals, true)
相加。我正在使用綁定源連接到'DataTable'。它將工作添加一個未綁定的列到UltraGrid? – zneak
我不認爲可以對來自Grid設計器@zneak的未綁定列採取行動,您可以通過編程方式執行此操作。我不認爲你可以定義一個'FilterCondition'來使用來自多列的值,因此我建議創建一個新的列,說明值是否不相等,然後過濾。 –
是的,您應該可以使用未綁定的列。您可以在InitializeRow事件中設置該值。 –
在最新的示例中,UltraGridFilterUIProvider控件似乎能夠使用不同的列進行過濾。這個示例被稱爲'Excel風格過濾' – Steve
@zneak由於網格的用戶界面默認不提供此功能,您是如何看待通過用戶界面公開的?如果要在表單上的網格外部添加自己的按鈕或選項,則篩選DataTable而不是網格會更簡單。在這個例子中,你可以在DataTable的DefaultView上設置RowFilter。例如,如果你的DataTable是fooData,你可以使用下面的代碼: fooData.DefaultView.RowFilter =「Foo <> Bar」; – alhalama
@alhalama,我不會通過UI公開它。用戶無法切換此過濾器。 – zneak