チュートリアル : データセットへの検証の追加
更新 : 2007 年 11 月
このチュートリアルでは、データセット内のデータに変更が加えられたときにデータを検証する方法を示します。データの検証をどこで実行するかは、アプリケーションの要件によって異なります。このチュートリアルでは、列内の値が変更される時点でデータを検証します。ここでは、ColumnChanging イベントを使用して、有効な値がレコードに入力されていることを検証します。値が無効な場合は、ErrorProvider コントロールが表示されます。
また、この例では、データセット デザイナを使ってデータセットの部分クラスを作成する方法も示します。(部分クラスには、ユーザーがコードを追加して Visual Studio 生成データセットの機能を拡張できます。データセットが再生成されても、追加コードは上書きされません。)
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
このチュートリアルでは、以下のタスクを行います。
新しい Windows アプリケーション プロジェクトを作成します。
データ ソース構成ウィザードを使用して、データセットを作成して構成します。
[データ ソース] ウィンドウから項目をドラッグしたときにフォーム上に作成するコントロールを選択します。詳細については、「方法 : [データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する」を参照してください。
[データ ソース] ウィンドウから Windows フォームに項目をドラッグすると、データ バインド コントロールを作成できます。
部分クラスを作成して、データセットの機能を拡張します。
OrderDetails テーブルの ColumnChanging イベントのイベント ハンドラを作成します。
Quantity 列の値が 0 より大きいことを確認する入力規則を追加します。
ErrorProvider コンポーネント (Windows フォーム) を表示して、データ バインド コントロールに無効な値が含まれていることをユーザーに通知します。
前提条件
このチュートリアルを実行するための要件は次のとおりです。
- Northwind サンプル データベースにアクセスします。詳細については、「方法 : サンプル データベースをインストールする」を参照してください。
新しい Windows アプリケーションの作成
新しい Windows アプリケーション プロジェクトを作成するには
[ファイル] メニューで新しいプロジェクトを作成します。
プロジェクトに「ValidationWalkthrough」という名前を付けます。
[Windows アプリケーション] をクリックし、[OK] をクリックします。詳細については、「Windows ベースのアプリケーションの作成」を参照してください。
ValidationWalkthrough プロジェクトが作成されてソリューション エクスプローラに追加されます。
データベースから新規データ ソースを作成する
データ ソースを作成するには
[データ] メニューの [データ ソースの表示] をクリックします。
[データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。
[データソースの種類を選択] ページで、[データベース] をクリックし、[次へ] をクリックします。
[データ接続の選択] ページで、次のいずれかの操作を行います。
Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は、それを選択します。
または
[新しい接続] を選択して [接続の追加] または [接続の変更] ダイアログ ボックスを表示します。詳細については、「[接続の追加] ダイアログ ボックスと [接続の変更] ダイアログ ボックス (一般)」を参照してください。
データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。
[アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。
[データベース オブジェクトの選択] ページの [テーブル] ノードを展開します。
[Order Details] テーブルを選択し、[完了] をクリックします。
プロジェクトに [NorthwindDataSet] が追加され、[データ ソース] ウィンドウに [Order Details] テーブルが表示されます。
データ バインド コントロールの作成
フォームにデータ バインド コントロールを作成するには
[データ ソース] ウィンドウで、[Order Details] テーブルを選択します。
テーブルのコントロール リストの [詳細] をクリックします。
[データ ソース] ウィンドウから Form1 に [Order Details] ノードをドラッグします。
説明のラベルが付いたデータ バインド コントロールとレコード間を移動するためのツール ストリップ (BindingNavigator) がフォームに表示されます。説明のラベルが付いたデータ バインド コントロールとレコード間を移動するためのツール ストリップ (BindingNavigator) がフォームに表示されます。NorthwindDataSet、Order_DetailsTableAdapter、BindingSource、および BindingNavigator がコンポーネント トレイに表示されます。
フォームへの ErrorProvider コントロールの追加
ErrorProvider コントロールを構成するには
ツールボックスから Form1 に ErrorProvider をドラッグします。
[プロパティ] ウィンドウで、ErrorProvider の DataSource プロパティを Order_DetailsBindingSource に設定します。
メモ : DataMember プロパティを設定しないでください。
ColumnChanging イベント ハンドラの作成
入力規則イベント ハンドラを作成するには
ソリューション エクスプローラで NorthwindDataSet.xsd ファイルをダブルクリックして、データセット デザイナに NorthwindDataSet を開きます。
OrderDetails テーブルの Quantity 列をダブルクリックして OrderDetailsDataTable_ColumnChanging イベント ハンドラを作成します (C# では、データ テーブルの部分クラスのみが作成されます)。
メモ : テーブル名 (タイトル バーの [Order Details]) をダブルクリックして、RowChanging イベントのイベント ハンドラを作成します。
e.ProposedValue に含まれている値が 0 より大きいことを検証するコードを追加します。指定された値が 0 以下の場合、エラーがあることを示すように列を設定します。
次のコードを列変更イベント ハンドラの "Add user code here" というコメントの下に貼り付けます。
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
// C# // Add the following code // to the partial class. 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", ""); } }
アプリケーションのテスト
アプリケーションをテストするには
F5 キーを押してアプリケーションを実行します。
[Quantity] ボックスの値を 0 に変更します。
Tab キーを押して、フォーカスをテキスト ボックスの外に移動します。
エラー プロバイダのアイコンが表示されます。
マウス ポインタをエラー プロバイダの上に置いてメッセージを表示します。
次の手順
アプリケーションの要件によって、入力規則を追加した後で実行する手順がいくつかあります。このチュートリアルで行うことができる拡張には次のものがあります。
データベースに更新を送信する機能を追加します。詳細については、「チュートリアル : データベースへのデータの保存 (単一テーブル)」を参照してください。
データセットを編集し、データベース オブジェクトの追加または削除を行います。詳細については、「方法 : データセットを編集する」を参照してください。