- PR -

DetailsView内のDropDownListについて

投稿者投稿内容
kodoux
会議室デビュー日: 2006/07/07
投稿数: 7
投稿日時: 2006-07-07 17:16
VWD2005でVBを利用しています。

標記の件で、DetailsViewのデータ編集、挿入時にDropDownListから選択できるように
してますが、リスト項目が多く(100以上)探しだすことが困難です。

そこで、他にDropDownListを作成して抽出したリストをDropDownListに登録したいと
思ってます。

過去にDataGrid上のDropDownListを連携させる方法等が掲載されていますが、応用の
仕方が分かりません。

初心者ですので、丁寧にご教授ください。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-07-07 17:39
まず、どんな仕様・動作にしたいのかを 丁寧に 説明して下さい。

引用:
過去にDataGrid上のDropDownListを連携させる方法等が掲載されていますが、

具体的にどれでしょうか。

[追記]
ドロップダウンで選択されたら他方のドロップダウンの中身を動的に設定したいということと
想像できますが。ポストバックさせて普通に設定するかjavascriptでやるか。後者の場合は、
あらかじめscriptをべたっと吐いておくかajaxという技術を使うかになるかな。

[追記2]
↓そうか、VS2005だったら結構簡単につくれちゃいますね。ウィザードの中でWHERE句の
指定にControlの値を直接指定できるから。

[ メッセージ編集済み 編集者: べる 編集日時 2006-07-07 21:03 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-07 20:54
> 初心者ですので、丁寧にご教授ください。

まず、自分でやってみて、どこまでなら自分でできるのか、どこができないのか、
それを見極めてから質問するようにしてみては?
自分が何がわからないのかさえわからない状態で人のアドバイス聞いても中身を
理解できないまま終わるだけですよ。
特にデザイナ画面から設定していく部分とかは掲示板では説明しずらいものが
ありますし。

SqlDataSourceを利用して2つのDropDownListを連携させる場合に限ると、

・最初のDropDownListとそこにデータを貼り付けるSqlDataSourceを作成する
・2つめのDropDownListとそこにデータを貼り付けるSqlDataSourceを作成する
 2つめのSqlDataSourceは1つ目のDropDownListで選択されている値をもとに
 データを絞り込めるように設定する

という形になるかと思います。
さすがにここはわかってるかな?
kodoux
会議室デビュー日: 2006/07/07
投稿数: 7
投稿日時: 2006-07-07 22:26
説明不足ですみません。

具体的にはDropDownList1には都道府県名が入っているとします。テーブルのデータは
[prefID][prefName]とします。
DropDownList2は市町村名です。データは[cityID][prefID][cityName]。

住所録を表示するDetailsViewがあり、DropDownList1とDropDownList2を配置します。
下記のとおりにDropDownList1には都道府県名、DropDownList2には市町村名が表示
されるようにします。

引用:

SqlDataSourceを利用して2つのDropDownListを連携させる場合に限ると、

・最初のDropDownListとそこにデータを貼り付けるSqlDataSourceを作成する
・2つめのDropDownListとそこにデータを貼り付けるSqlDataSourceを作成する
 2つめのSqlDataSourceは1つ目のDropDownListで選択されている値をもとに
 データを絞り込めるように設定する



DropDownList2のSqlDataSourceのWHERE句でDropDownList1のSelectedValueを
指定してやればよいと思うのですが、DetailsViewの中にあるDropDownList1を
指定する方法が分かりません。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=18596&forum=7

上記を参考にFindControlを使ってみましたがうまくいきません。

さらにデータのアップデート時にはDropDownList2は既存の選択値たとえば大阪市が
表示されます。ここでDropDownList1を京都府に変更するとDropDownList2には
大阪市がない旨のエラーとなってしまうのではないでしょうか。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-07 22:44
ああ、DetailsViewの中に2つ入れたいという話ですか。
おっしゃるとおり難しいんじゃないですかね。

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=492535&SiteID=7

例にあげてるものまで同じだし。。。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-07-08 03:33
引用:
DropDownList2のSqlDataSourceのWHERE句でDropDownList1のSelectedValueを
指定してやればよいと思うのですが、DetailsViewの中にあるDropDownList1を
指定する方法が分かりません。

確かにウィザードでは出てこないですね。適当にDropDownList2とか指定しておいて
あとでaspxファイルを編集してDropDownList1に変えたらできましたよ。FindControlは
使いませんでした。(という意味で合ってるかな)

引用:
さらにデータのアップデート時にはDropDownList2は既存の選択値たとえば大阪市が
表示されます。ここでDropDownList1を京都府に変更するとDropDownList2には
大阪市がない旨のエラーとなってしまうのではないでしょうか。

更新の仕様がないので何のことかよくわかりませんが、DropDownList1の値は更新には
使わないんですよね?(そして都道府県テーブルも市町村テーブルは更新しませんよね)
どのタイミングのことを言っているのかもちょっとわかりませんでした。
kodoux
会議室デビュー日: 2006/07/07
投稿数: 7
投稿日時: 2006-07-08 21:27
引用:

どっとねっとふぁんさんの書き込み (2006-07-07 22:44) より:
ああ、DetailsViewの中に2つ入れたいという話ですか。
おっしゃるとおり難しいんじゃないですかね。

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=492535&SiteID=7

例にあげてるものまで同じだし。。。




まさに同じです。回答がないということは解決策がないということでしょうか。
リストの項目が多い場合、どういった方法を取っているのでしょうか。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-10 03:03
なんとかやる方法がないかと思っていろいろ試してみました。
結果的に、プログラミングを(本質的な行数は)1行追加することで実装できます。
何箇所かウィザードでは設定できないaspxファイルの記述を手で書き換える必要もありますけどね。

http://dotnetfan.org/blogs/dotnetfanblog/articles/737.aspx

スキルアップ/キャリアアップ(JOB@IT)