- PR -

DropDownListの初期値を表示する方法

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2008/01/15
投稿数: 65
投稿日時: 2008-09-17 19:54
お世話になります。
Vs2005でWebサイトを作っていますがDropDownListの初期値の表示方法がわからず困っています。
お知恵を貸してください。


DropDownListが二つ(DW1,DW2)あり連携させています。
(DW1が選択されるとDW2にDW1で絞り込んだ内容を表示させる。)
データはDBから取り込んでいます。
DW1とDW2には先頭に「選択してください」と表示させたいので、
項目に「選択してください」を追加し、AppendDataBoundItemsをTrueに設定しています。
DW1の項目が選ばれた時にDW2のDataBind()を行うため、DW1だけAutoPostBackをTrueに設定しています。

Protected Sub DW1_SelectedIndexChanged(...) Handles DW1.SelectedIndexChanged
DW2.Items.Clear()
DW2.DataBind()
'DW1.AppendDataBoundItems = False このタイミングでやるとDW1.databind()と同じ動きをする
End Sub

これでほぼ期待通りの動きはしているのですが、AppendDataBoundItemsをTrueにしているせいか、DW1で項目を選択する度にDW1の項目が増えていってしまいます。(DW2は毎回クリアーしているから増えません)
また、DW2については初回は先頭に「選択してください」と表示させることができるのですが、DW1を選択した時は表示できません。
(多分、DW2.Items.Clear()で消えてしまうのでしょう・・・)

Page_LoadでDW1をDataBind()したあと、AppendDataBoundItems に Falseを設定してみたりしましたが期待した結果にはなりません。
上にも書いていますが、AppendDataBoundItemsを書き換えるとDataBind()が発生してしまうようで、初回だけAppendDataBoundItemsにTrueを設定して項目を追加した後でAppendDataBoundItemsをFalseに書き換えるという手法は使えないようです。


DW1の項目を増やさないためにはどうすれば良いのでしょうか?

どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-09-18 09:53
> AppendDataBoundItemsをTrueにしているせいか、DW1で項目を選択する度にDW1の項目が増えていってしまいます。

本当ですか?
PostBackかどうかの判定をせずに、Page_Loadで毎回DataBindを実行したりしてませんか?
そこが一番あやしいそう。
未記入
ベテラン
会議室デビュー日: 2008/01/15
投稿数: 65
投稿日時: 2008-09-18 11:00
引用:

どっとねっとふぁんさんの書き込み (2008-09-18 09:53) より:
本当ですか?
PostBackかどうかの判定をせずに、Page_Loadで毎回DataBindを実行したりしてませんか?
そこが一番あやしいそう。



JavaScriptを登録するために毎回Page.DataBind()を行っていました。
これをポストバック以外の時だけにしたら直りました。
ありがとうございます。
1

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