4

假设我有一个带有FooBarUltraGrid列的 Infragistic 。是否可以过滤表格以便只显示FooBar不相等的行?

例如,如果我有这些数据:

Foo  Bar
--------
0.1  0.1
0.1  0.2
0.2  0.2

过滤器将隐藏第一行和第三行。

4

3 回答 3

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);
于 2012-08-06T08:43:34.337 回答
1

您应该能够从 Grid 设计器中执行此操作;

  1. [Foo]!=[Bar]使用公式为您的数据源创建一个新的布尔列。
  2. 将隐藏列添加到网格并设置网格的DisplayLayout.Override.RowFilterMode = RowFilterMode.AllRowsInBand.
  3. 在 中grid.DisplayLayout.Band[].ColumnFilters,添加一个FilterLogicalOperator.And带有新列的FilterConditions.Add(FilterComparisionOperator.Equals, true).
于 2012-06-14T19:23:34.277 回答
1

由于您不允许用户切换此过滤器并且正在使用 DataTable,因此最简单的解决方案是过滤 DataTable 而不是网格。

例如,如果您的 DataTable 是 fooData,您将使用以下内容:

fooData.DefaultView.RowFilter = "Foo <> Bar";
于 2012-07-08T20:35:05.227 回答