次の方法で共有


方法 : 行の変更時にデータを検証する

更新 : 2007 年 11 月

データ検証とは、アプリケーション データに入力される値をチェックする処理です。基になるデータ ストアに更新を送信する前に、このような値をチェックすることをお勧めします。これは、チェックによってアプリケーションとデータ ストアの間で生じる可能性のあるラウンド トリップの回数を減らすことができるためです。

1120xds5.alert_note(ja-jp,VS.90).gifメモ :

データセット デザイナで作成される部分クラスにおいて、データセットに検証ロジックを追加できます。このデザイナで生成されるデータセットによって、部分クラス内のコードが削除または変更されることはありません。

RowChanging イベントに応答することにより、データ行の値の変更時にデータを検証できます。このイベントが発生すると、現在の行の各列に対して指定されている値を含むイベント引数 (e.Row) が渡されます。e.Row の各列の内容に基づいて、次の操作が可能です。

  • 何もせずに、指示された値を受け入れます。

  • 行変更イベント ハンドラで列エラー (SetColumnError) を設定して、指定された値を拒否します。

  • オプションで ErrorProvider コントロールを使用して、ユーザーにエラー メッセージを表示します。詳細については、「ErrorProvider コンポーネント (Windows フォーム)」を参照してください。

ColumnChanging イベントを使用して、個別の列の変更中に検証を実行することもできます。詳細については、「方法 : 列の変更時にデータを検証する」を参照してください。

RowChanging イベントでのデータ検証

検証する各列にアプリケーションの要件を満たすデータが格納されていることを検証するコードを記述できます。指定された値が受け入れられない場合、エラーがあることを表すように該当する列を設定します。Quantity 列が 0 以下の場合に列エラーを設定する例を次に示します。行変更イベント ハンドラは、次のように記述します。

行の変更時にデータを検証するには (Visual Basic)

  1. データセット デザイナでデータセットを開きます。詳細については、「方法 : データセット デザイナでデータセットを開く」を参照してください。

  2. 検証するテーブルのタイトル バーをダブルクリックします。この操作により、データセットの部分クラス ファイルに DataTableRowChanging イベント ハンドラが自動的に作成されます。

    1120xds5.alert_note(ja-jp,VS.90).gifヒント :

    テーブル名の左側をダブルクリックして、行変更イベント ハンドラを作成します。テーブル名をダブルクリックすると、テーブル名を編集できます。

    Private Sub Order_DetailsDataTable_Order_DetailsRowChanging(ByVal sender As System.Object, _
        ByVal e As Order_DetailsRowChangeEvent) Handles Me.Order_DetailsRowChanging
    
        If CType(e.Row.Quantity, Short) <= 0 Then
            e.Row.SetColumnError("Quantity", "Quantity must be greater than 0")
        Else
            e.Row.SetColumnError("Quantity", "")
        End If
    End Sub
    

行の変更時にデータ検証するには (C#)

  1. データセット デザイナでデータセットを開きます。詳細については、「方法 : データセット デザイナでデータセットを開く」を参照してください。

  2. 検証するテーブルのタイトル バーをダブルクリックします。この操作により、DataTable の部分クラス ファイルが作成されます。

    1120xds5.alert_note(ja-jp,VS.90).gifメモ :

    データセット デザイナでは、RowChanging イベントのイベント ハンドラが自動作成されません。RowChanging イベントを処理するメソッドを作成し、このイベントをフックするコードをテーブルの初期化メソッドで実行する必要があります。

  3. 部分クラスに次のコードをコピーします。

        public override void EndInit()
        {
            base.EndInit();
            Order_DetailsRowChanging += TestRowChangeEvent;
        }
    
        public void TestRowChangeEvent(object sender, Order_DetailsRowChangeEvent e)
        {
            if ((short)e.Row.Quantity <= 0)
            {
                e.Row.SetColumnError("Quantity", "Quantity must be greater than 0");
            }
            else
            {
                e.Row.SetColumnError("Quantity", "");
            }
        }
    

参照

処理手順

方法 : データベース内のデータに接続する

方法 : 列の変更時にデータを検証する

チュートリアル : Windows アプリケーションのフォームでのデータの表示

概念

データの新機能

TableAdapter の概要

データセット デザイナ

データ ソースの概要

参照

[データ ソース] ウィンドウ

イベント (C# プログラミング ガイド)

その他の技術情報

データに関するチュートリアル

データの検証