Imports System.Data.SqlClient Imports Infragistics.Win Imports Infragistics.Win.UltraWinGrid ...
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。