UltraGrid
列FooとBarを持つ Infragistic があるとします。FooとBarが等しくない行のみが表示されるようにテーブルをフィルタリングすることは可能ですか?
たとえば、次のデータがあるとします。
Foo Bar
--------
0.1 0.1
0.1 0.2
0.2 0.2
フィルターは、1 行目と 3 行目を非表示にします。
UltraGrid
列FooとBarを持つ Infragistic があるとします。FooとBarが等しくない行のみが表示されるようにテーブルをフィルタリングすることは可能ですか?
たとえば、次のデータがあるとします。
Foo Bar
--------
0.1 0.1
0.1 0.2
0.2 0.2
フィルターは、1 行目と 3 行目を非表示にします。
見た目よりも簡単で、追加の列などを作成する必要はないと確信しています。
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);
ユーザーがこのフィルターを切り替えることを許可せず、DataTableを使用しているため、最も簡単な解決策は、グリッドではなくDataTableをフィルター処理することです。
たとえば、DataTableがfooDataの場合、次のように使用します。
fooData.DefaultView.RowFilter = "Foo <> Bar";
これはグリッド デザイナーから実行できるはずです。
[Foo]!=[Bar]
を使用して新しいブール列をデータ ソースに作成します。DisplayLayout.Override.RowFilterMode = RowFilterMode.AllRowsInBand
。grid.DisplayLayout.Band[].ColumnFilters
新しい を追加します。FilterLogicalOperator.And
FilterConditions.Add(FilterComparisionOperator.Equals, true)