DetailsViewの内部でDropDownListを使う

DetailsViewを利用してデータの追加/更新を行う場合、DropDownListを使ってマスターとなるデータを選択したい場合があります。

これを実現する方法を探ってみます。

まず部テーブルを用意しておきます。

DetailsViewで操作するのは課テーブルです。

まず、Webフォーム上に1つめのSqlDataSourceを追加します。ここでは課テーブルを対象にし、データの追加/削除が可能になるよう設定します。
DetailsViewを追加し、データソースとして作成したSqlDataSourceを指定します。
ページング、挿入、編集を有効にします。

この時点でデバッグを実行してデータの追加/変更ができることを確認しておきます。

○表示データにマスターデータの内容を表示する

部門名がきちんと表示できるようにします。そのためにはSqlDataSoruce1のデータソースを再編集します。
データソースの構成ウィザードのSelectステートメントの構成でカスタムSQLステートメントを利用するように設定を変更します。

Select文を部門名が表示できるように変更します。
クエリビルダを使うとこんな感じになります。

Update、Insert、Delete文には手を加えず、データソースの構成ウィザードを終了します。
フィールドとキーの更新を促すメッセージがでますが、ここでは「いいえ」をクリックします。

DetailsViewのフィールドを編集します。
まず、buIDフィールドをテンプレートフィールドに変換します。

buIDのItemTemplateフィールドに表示されるラベルはbuIDにバインドされています。
このバインドをbuNameに変更します。

デバッグを実行すると、部門名が表示されるようになります。

○更新時にDropDownListで部門を選択できるようにする

SqlDataSourceを追加し、部門テーブルからIDと部門名を取り出せるようにしておきます。
そのうえでDetailsViewのbuIDのEditItemTemplateを編集します。
まず、元々追加されているテキストボックスを削除し、変わりにDropDownListを追加します。

DropDownListのDataBindingsでSelectedValueにbuIDをバインドします。

DropDownListのデータソースとして追加したSqlDataSourceを選択し、表示するフィールドとしてbuName、値のフィールドとしてbuIDを設定します。

これで更新時に部門名をDropDownListから選択することが可能になります。

選択した内容でデータが書き換えられることも確認しておいてください。

○新規作成時にDropDownListで部門を選択できるようにする

DetailsViewのbuIDのEditItemTemplateに対して行ったのと同じ作業をInsertItemTemplateに対して行います。
SqlDataSoruceはすでに作成しているので、テキストボックスを削除してDropDownListの追加、そしてDropDownListnoバインディングとデータソースの設定をすることで作業は終了です。


 ◆ この記事についてのご意見、ご質問は以下のフォーラムにお願いします ◆
http://dotnetfan.org/forums/733/ShowPost.aspx

公開 10-07-2006 12:26 投稿者 ono
カテゴリ:

コメント

コメントはありません
この投稿に対する新規コメントはできません
SkinName:iroha_Blog2
Powered by Community Server, by Telligent Systems