バージョン

エラーで行をフィルタリング

WinGrid™ は元となるデータ ソースの IDataErrorInfo の実装によって決定されますが、セルにエラーがあるかどうかに基づいてフィルタリングをサポートします。UltraGridColumn オブジェクトと Override オブジェクトの FilterOperandDropDownItems プロパティは、フィルター行またはヘッダー アイコンに存在するフィルター ドロップダウン リストに表示すべき項目を選択する方法を提供します。このプロパティは以下のフラグ付きのオプションで構成されます:

All、Blanks、CellValues、Custom、Default、Errors、NonBlanks、NonErrors、ShowAll、ShowNone。

以下のコードは、データ エラーを設定するために WinGrid コントロールの InitializeRow イベントに配置されます。FilterOperandDropDownItems プロパティはドロップダウン リストに "Errors" フィルター オプションをリストするように構成されます。これは、エンドユーザーによって選択された時にセル値がエラー条件に一致するすべての行を表示します。

このトピックは、UltraGrid コントロールをフォームにドラッグし、Northwind Database の Orders テーブルにバインドしてあることが前提となっています。

Visual Basic の場合:

Imports System.Data.SqlClient
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinGrid
...
Me.ultraGrid1.DisplayLayout.Override.SupportDataErrorInfo = SupportDataErrorInfo.RowsAndCells
Me.ultraGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons
Me.ultraGrid1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.[True]
Dim rowError As String = ""
Dim cellError As String = ""
Dim value As [Object] = e.Row.Cells("ShippedDate").Value
' ShippedDate 列が空の場合、データ エラーを設定します。
If DBNull.Value = value Then
    rowError = "Row contains errors"
    cellError = "Shipped Date can not be empty"
End If
Dim drv As DataRowView = DirectCast(e.Row.ListObject, DataRowView)
drv.Row.RowError = rowError
drv.Row.SetColumnError("ShippedDate", cellError)
' フィルター ドロップダウン リストに "Errors" フィルター オプションのみをリストします。
Me.ultraGrid1.DisplayLayout.Override.FilterOperandDropDownItems = FilterOperandDropDownItems.Errors

C# の場合:

using System.Data.SqlClient;
using Infragistics.Win;
using Infragistics.Win.UltraWinGrid;
...
this.ultraGrid1.DisplayLayout.Override.SupportDataErrorInfo = SupportDataErrorInfo.RowsAndCells;
this.ultraGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons;
this.ultraGrid1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.True;
string rowError = "";
string cellError = "";
Object value = e.Row.Cells["ShippedDate"].Value;
// ShippedDate 列が空の場合、データ エラーを設定します。
if (DBNull.Value == value)
{
  rowError = "Row contains errors";
  cellError = "Shipped Date can not be empty";
}
DataRowView drv = (DataRowView)e.Row.ListObject;
drv.Row.RowError = rowError;
drv.Row.SetColumnError("ShippedDate", cellError);
// フィルター ドロップダウン リストに "Errors" フィルター オプションのみをリストします。
this.ultraGrid1.DisplayLayout.Override.FilterOperandDropDownItems = FilterOperandDropDownItems.Errors;

エラー条件に一致する行を表示する WinGrid。

WinGrid Filtering Rows with Errrors.png