UltraGrid では DataFilter 機能を使用することにより、バインドされた元データを変更することなくセルの表示値を変更することができます。

IEditorDataFilter インターフェイスの Convert メソッドを実装します。
このメソッドを使用することにより、セルに表示する値とセルのエディタで扱う値の間で行うデータ変換の処理を拡張することができます。
ここでは、セルの値が DBNull の場合はセルに “未入力” が表示されるようにします。

public class MyNullValueConverter : IEditorDataFilter
{
	object IEditorDataFilter.Convert(EditorDataFilterConvertArgs conversionArgs)
	{
		if ((conversionArgs.Context as UltraGridCell)?.Column.Key == "myCustomColumn")
		{
			if (conversionArgs.Direction == ConversionDirection.OwnerToEditor)
			{
				if (conversionArgs.Value == DBNull.Value)
				{
					conversionArgs.Handled = true;
					conversionArgs.IsValid = true;
					return "未入力";
				}
			}
			else if (conversionArgs.Direction == ConversionDirection.EditorToOwner)
			{
				if (conversionArgs.Value.ToString() == "未入力")
				{
					conversionArgs.Handled = true;
					conversionArgs.IsValid = true;
					return DBNull.Value;
				}
			}
		}

		return conversionArgs.Value;
	}
}

以上のように作成した MyNullValueConverter クラスのインスタンスを UltraGridの列のEditor.DataFilterプロパティに割り当てます。

 ultraGrid1.DisplayLayout.Bands[0].Columns["myCustomColumn"].Editor.DataFilter = new MyNullValueConverter();
Tagged:

製品について

Ultimate UI for Windows Forms