'宣言 Public ReadOnly Property Conditions As ConditionGroup
public ConditionGroup Conditions {get;}
データ レコードはレコード フィルターを渡すかどうかを決定するのに使用される 1 つ以上の条件を指定します。レコード フィルターの Field と関連付けられたセル データがその条件に対して評価され、データ レコードをフィルターするかどうか判断します。セル値がこの条件を満たさない場合、データ コードはフィルター アウトされます。データ レコードの DataRecord.IsFilteredOut プロパティは、データ レコードがフィルター条件を満たしているかどうかを反映します。デフォルトでは、フィルターされたデータ レコードは非表示になります。しかし、FilterAction プロパティによりフィルターされたレコードにどのように対処するか指定できます。
任意の Infragistics.Windows.Controls.ICondition 派生オブジェクトを条件グループに追加できます。このインターフェイスを実装する組み込みクラスには Infragistics.Windows.Controls.ComparisonCondition、Infragistics.Windows.Controls.ComplementCondition、および Infragistics.Windows.Controls.ConditionGroup があります。ComparisonCondition を使用して、標準に使用されるフィルター条件の指定ができます。ComplementCondition は他の条件の結果を補います。Infragistics.Windows.Controls.ConditionGroup は ICondition を実装するため、条件グループ内の条件グループの作成ができます(ネストされている条件の作成が可能です)。
また Infragistics.Windows.Controls.ComparisonCondition は Infragistics.Windows.Controls.SpecialFilterOperandBase インスタンスをその比較値としてサポートします。組み込み特殊オペランドは、静的プロパティとして Infragistics.Windows.Controls.SpecialFilterOperands クラスから公開されます。詳細および使用できる特殊オペランドのリストについては、Infragistics.Windows.Controls.SpecialFilterOperands を参照してください。この特別なオオペランド (FirstQuater、Today、ThisWeek、AboveAverage、Top10 など) を使用して、よく使用されるフィルター条件でデータをすばやくフィルターできます。拡張することも可能です。SpecialFilterOperandBase からクラスを派生して、固有な特別オペランドの作成が可能です(またはビルトインの特別オペランドのロジック オーバーライドも可能です)。SpecialFilterOperands の Infragistics.Windows.Controls.SpecialFilterOperands.Register(Infragistics.Windows.Controls.SpecialFilterOperandBase) メソッドを使用して、データ プレゼンター フィルタリング UI のカスタム オペランドを簡単に統合することも可能です。
Imports Infragistics.Windows Imports Infragistics.Windows.Controls Imports Infragistics.Windows.Editors Imports Infragistics.Windows.DataPresenter Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Dim fieldLayout As FieldLayout = _dp.FieldLayouts(0) ' Create a new RecordFilter for 'Country' field. Dim filter As RecordFilter = New RecordFilter() filter.FieldName = "Country" filter.Conditions.Add(New ComparisonCondition(ComparisonOperator.Equals, "US")) ' Add the RecordFilter to field layout's RecordFilters collection. fieldLayout.RecordFilters.Add(filter) ' If you have hierarchical data source then you can also filter child records. ' Create a RecordFilter that filters the child records. filter = New RecordFilter() filter.FieldName = "Product" filter.Conditions.Add(New ComparisonCondition(ComparisonOperator.Equals, "A")) ' Now add the filter. For child field layouts, each individual parent ' record's child records can be filtered independently. That is one parent ' record's child records can have different filter criteria from another ' parent record's child records. This is the default mode of filtering. You ' can change it by setting RecordFilterScope property to AllRecords in which ' case all child records in the child field layout are affected by the ' filter. However depending on the mode, the place where you specify the ' filter criteria is different. For the default SiblingDataRecords mode, you ' need to specify the filter criteria on RecordFilters property of the child ' RecordManager of a parent record. For the AllRecords mode, use the child ' FieldLayout's RecordFilters property. Note that the root field layout ' doesn't support SiblingDataRecords mode since it doesn't have multiple ' record collections and therefore for the root field layout, always use the ' field layout's RecordFilters property. ' Dim childDataRecordsManager As RecordManager = _dp.RecordManager.Unsorted(0).ChildRecords(0).ChildRecordManager Dim childFieldLayout As FieldLayout = _dp.FieldLayouts(1) childFieldLayout.Settings.RecordFilterScope = RecordFilterScope.AllRecords If RecordFilterScope.AllRecords = childFieldLayout.Settings.RecordFilterScope Then ' When using AllRecords mode, use the field layout's RecordFilters. childFieldLayout.RecordFilters.Add(filter) Else ' When using SiblingDataRecords, use the child RecordManager's RecordFilters. childDataRecordsManager.RecordFilters.Add(filter) End If End Sub
using Infragistics.Windows; using Infragistics.Windows.Controls; using Infragistics.Windows.Editors; using Infragistics.Windows.DataPresenter; public void Window1_Loaded( object sender, RoutedEventArgs e ) { FieldLayout fieldLayout = _dp.FieldLayouts[0]; // Create a new RecordFilter for 'Country' field. RecordFilter filter = new RecordFilter( ); filter.FieldName = "Country"; filter.Conditions.Add( new ComparisonCondition( ComparisonOperator.Equals, "US" ) ); // Add the RecordFilter to field layout's RecordFilters collection. fieldLayout.RecordFilters.Add( filter ); // If you have hierarchical data source then you can also filter child records. // Create a RecordFilter that filters the child records. filter = new RecordFilter( ); filter.FieldName = "Product"; filter.Conditions.Add( new ComparisonCondition( ComparisonOperator.Equals, "A" ) ); // Now add the filter. For child field layouts, each individual parent // record's child records can be filtered independently. That is one parent // record's child records can have different filter criteria from another // parent record's child records. This is the default mode of filtering. You // can change it by setting RecordFilterScope property to AllRecords in which // case all child records in the child field layout are affected by the // filter. However depending on the mode, the place where you specify the // filter criteria is different. For the default SiblingDataRecords mode, you // need to specify the filter criteria on RecordFilters property of the child // RecordManager of a parent record. For the AllRecords mode, use the child // FieldLayout's RecordFilters property. Note that the root field layout // doesn't support SiblingDataRecords mode since it doesn't have multiple // record collections and therefore for the root field layout, always use the // field layout's RecordFilters property. // RecordManager childDataRecordsManager = _dp.RecordManager.Unsorted[0].ChildRecords[0].ChildRecordManager; FieldLayout childFieldLayout = _dp.FieldLayouts[1]; childFieldLayout.Settings.RecordFilterScope = RecordFilterScope.AllRecords; if ( RecordFilterScope.AllRecords == childFieldLayout.Settings.RecordFilterScope ) { // When using AllRecords mode, use the field layout's RecordFilters. childFieldLayout.RecordFilters.Add( filter ); } else { // When using SiblingDataRecords, use the child RecordManager's RecordFilters. childDataRecordsManager.RecordFilters.Add( filter ); } }