说我有一个带有 Foo 和 Bar 列的Infragistic UltraGrid
。是否可以过滤表格,以便只显示 Foo 和 Bar 不相等的行?
例如,如果我有这些数据:
Foo Bar
--------
0.1 0.1
0.1 0.2
0.2 0.2
过滤器会隐藏第一行和第三行。
答案 0 :(得分:5)
它比看起来更简单,我相信你不必创建额外的列或其他东西:
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);
答案 1 :(得分:1)
您应该可以从网格设计师那里做到这一点;
[Foo]!=[Bar]
为您的数据源创建一个新的布尔列。DisplayLayout.Override.RowFilterMode = RowFilterMode.AllRowsInBand
。grid.DisplayLayout.Band[].ColumnFilters
中,使用新列的FilterLogicalOperator.And
添加新的FilterConditions.Add(FilterComparisionOperator.Equals, true)
。答案 2 :(得分:1)
由于您不允许用户切换此过滤器并使用DataTable,因此最简单的解决方案是过滤DataTable而不是网格。
例如,如果您的DataTable是fooData,您将使用以下内容:
fooData.DefaultView.RowFilter = "Foo <> Bar";