- PR -

GridViewにDropDownListを連動させ、そこからさらにDropDownListを連動させたい

1
投稿者投稿内容
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-10-02 14:15
ちょっと設定がややこしいため、長くなりますが、
ご回答よろしくお願いいたします。

---------------------------------

現在、GridViewにDropDownListを連動させ、
そこからさらにDropDownListを連動させたいと思っています。

まず、GridView(GV1)があります。
そこには次のようなテーブル(tb1)を表示しているとします。

ID|ユーザ名|ユーザID|GID
1|テスト01|testusr1| 10
2|テスト02|testusr2| 20
3|テスト03|testusr3| 10
4|テスト04|testusr4| 20

また、これとは別に、このテーブルのグループの一覧をリストにした
DropDownList(DDL1)があります。
さらに、このDDL1で選択したユーザが属するグループに属する全ユーザを
リストアップするDropDownList(DDL2)があり、
DDL1が選択されると同時にDDL2も更新されるようになっています。

例えば、DDL1で「10」を選ぶと、それに連動してDDL2には
「testusr1」「testusr3」の2項目がリストで表示されるようになります。

---------------------------------

このとき、GV1からID2を選択したときにDDL2を、

コード:
        strSelectCommand = "SELECT ユーザID, ユーザ名 FROM tb1 WHERE (GID = '" + ddl1.SelectedValue + "')";
        SqlDataSource1.SelectCommand = strSelectCommand;
        SqlDataSource1.DataBind();
        SqlDataSource1.Dispose();
	
	ddl2.SelectedValue = "testusr2";



このようなSQLでバインドさせます。
すると、ddl2.SelectedValueの箇所で、
「項目一覧に存在しないため、'ddl2' に SelectedValue を指定することは無効です。」
というエラーが出てきます。

ddl2.SelectedValue = "testusr2"; の行をコメントアウトして確認したら、
DDL2のリスト自体は更新されていることは確認できました。

---------------------------------

そこで質問なのですが、
GV1を選択した際に、DDL2のリストを更新し、
さらにSelectedValueをGV1で選択した項目をSelectedにするには、
どうすれば良いでしょうか?

Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-10-02 15:23
すみません、やっと頭の整理がつきました。
簡単にまとめれば、

SQLのDataBindでリストを作っているDropDownListにおいて、
DataBindした瞬間にデフォルトで選択されている項目も一緒に変更できるか、
ということだと思います。

ややこしく書いてしまって申し訳ありません。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-02 23:54
引用:
ddl2.SelectedValue = "testusr2"; の行をコメントアウトして確認したら、
DDL2のリスト自体は更新されていることは確認できました。

この瞬間にddl2に、testusr2というvalueをもつItemが含まれていないとダメです。

ddl2のDataBoundでやるのがいいでしょうかね。

[追記]
あ、直前でddl2.DataBind();しちゃってもできるかな。

[ メッセージ編集済み 編集者: べる 編集日時 2007-10-03 00:03 ]
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-10-03 11:25
ご回答ありがとうございます。

ご助言の通り、直前にDataBindをはさむことで、
SelectedValueが機能するようになりました。

ありがとうございました。
1

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