以上で、データソースの準備が完了しました。それではいよいよDGVコントロールを使っていきましょう。ということで、まずはDGVコントロールをフォームに配置し、そのプロパティを設定して……という標準的な作り方もできますが、もっと便利な機能が用意されています。
[データソース]ウィンドウから先ほど作成された[authors]の項目をフォーム上にドラッグ&ドロップします。そうするとDGVコントロールといくつかのコントロールやコンポーネントが自動的にフォームに配置されます。
ここでは、使いやすいようにDGVコントロールの右上隅にある小さなボタンをクリックし、[DataGridViewタスク]メニューから[親コンテナにドッキングする]を選択して、DGVコントロールをフォームいっぱいに配置されるようにしておきましょう(図7)。
実はこれでプログラムは完成です。さっそく[F5]キーを押して実行してみましょう。
サンプル・データベースにはサンプル・レコードが最初から何件か格納されていますので、プログラムを実行すると次のような画面が表示されるはずです。
[データソース]ウィンドウから項目をドラッグ&ドロップしただけですが、このプログラムはレコードの表示、編集、追加、削除、保存が可能ですので、りっぱなWindowsデータベース・アプリケーションといってよいでしょう*1。
*1 authorsデータベースでは、au_lname列やau_fname列のデータ型がvarchar型として定義されているため、このままでは日本語のデータを扱えません。データベース・エクスプローラでテーブル定義を開き、データ型をnvarchar型に変更すると日本語が格納できるようになります。また、いくつかの列には非Null制約や入力形式に対する制約が設定されていますので、それに違反するデータを入力しようとすると例外が発生します。どのような制約が設定されているかはデータベース・エクスプローラでテーブル定義を開いて確認することができます。
ウィンドウ上部にあるバーは、BindingNavigatorコントロールです。このコントロールからは、現在選択されている行位置の移動、新しい行(レコード)の追加、行の削除、データの保存などを行えます。
[データの保存]ボタンがあることからも分かるように、このプログラムでは、一通りデータの編集や追加、削除が終わったところでその編集内容をデータベースに保存するという方式が採られています。これは第2回で説明した「非接続型データアクセス」のモデルを忠実に守っているといえます。
プログラムを一度終了し、再度実行してみると前回で編集したデータが保存されておらずアレッと思った方がいるかもしれません。
これは前述しているように、DBファイルのプロパティの「出力ディレクトリにコピー」欄が「常にコピーする」となっているためです。つまり、[データの保存]ボタンによりDBファイルは更新されるものの、プログラムを起動するたびにそれが編集前のDBファイルにより上書きされてしまっているのです。
プログラムを再実行しても前回で保存した内容が残るようにするには、「出力ディレクトリにコピー」欄を「新しい場合はコピーする」に変更するか、いったんプロジェクトの「すべての保存」を行い、その出力ディレクトリ(bin\Debugディレクトリ)にDBファイル(.mdfファイルと.ldfファイル)をコピーし、「出力ディレクトリにコピー」欄を「コピーしない」に変更してからプログラムを実行してください。これについては「.NET TIPS:Visual Studio 2005でデータベースの更新が反映されない場合には?」でも解説しています。
Copyright© Digital Advantage Corp. All Rights Reserved.