方法 : 列の変更時にデータを検証する
データの検証は、アプリケーションのデータに入力される値をチェックするプロセスです。 基になるデータ ストアに更新を送信する前にこのような値をチェックすると、アプリケーションとデータ ストアの間で生じる可能性のあるラウンド トリップの回数を減らすことができます。
注意
データセット デザイナーで作成される部分クラスにおいて、データセットに検証ロジックを追加できます。 このデザイナーで生成されるデータセットによって、部分クラス内のコードが削除または変更されることはありません。 詳細については、「方法 : データセットの機能を拡張する」を参照してください。
ColumnChanging イベントに応答することにより、データ列の値の変更時にデータの値を検証できます。 このイベントが発生すると、現在の列に対して指定されている値を含むイベント引数 (ProposedValue) が渡されます。 e.ProposedValue の内容に基づいて、次の操作が可能です。
何もせずに、指示された値を受け入れます。
列変更イベント ハンドラーで列エラー (SetColumnError) を設定して、指定された値を拒否します。
オプションで ErrorProvider コントロールを使用して、ユーザーにエラー メッセージを表示します。 詳細については、「ErrorProvider コンポーネント (Windows フォーム)」を参照してください。
RowChanging イベントの発生中にも検証を実行できます。 詳細については、「方法 : 行の変更時にデータを検証する」を参照してください。
列の値の変更時にデータを検証するには
データセット デザイナーでデータセットを開きます。 詳細については、「方法 : データセット デザイナーでデータセットを開く」を参照してください。
検証する列をダブルクリックします。 この操作によって DataTable の ColumnChanging イベント ハンドラーが作成されます。
注意
データセット デザイナーでは、C# イベントのイベント ハンドラーは自動作成されません。 このイベントの処理に必要なコードは、後述します。
アプリケーションの要件を満たすデータが e.ProposedValue に含まれていることを検証するコードを追加します。 指示された値が受け入れられない場合、エラーがあることを表すように該当する列を設定します。
Quantity 列が 0 以下の場合に列エラーを設定するコード例を次に示します。 列変更イベント ハンドラーは、次のように記述します。
'Visual Basic Private Sub Order_DetailsDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As System.Data.DataColumnChangeEventArgs) _ Handles Me.ColumnChanging If (e.Column.ColumnName = Me.QuantityColumn.ColumnName) Then If CType(e.ProposedValue, Short) <= 0 Then e.Row.SetColumnError(e.Column, "Quantity must be greater than 0") Else e.Row.SetColumnError(e.Column, "") End If End If End Sub // C# // Add this code to the DataTable // partial class. public override void EndInit() { base.EndInit(); ColumnChanging += SampleColumnChangingEvent; } public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e) { if (e.Column.ColumnName == QuantityColumn.ColumnName) { if ((short)e.ProposedValue <= 0) { e.Row.SetColumnError("Quantity", "Quantity must be greater than 0"); } else { e.Row.SetColumnError("Quantity", ""); } } }
参照
処理手順
方法 : Windows フォーム DataGridView コントロールのデータを検証する
方法 : Windows フォーム ErrorProvider コンポーネントを使用してフォーム妥当性検査でエラー アイコンを表示する