- - PR -
DropDownListで現在選択行が設定できない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-07-28 16:31
DropDownListに対して現在選択されている行を設定したいと考えています。
初期処理ではきちんと選択して欲しい行が選択されるのですが、 PostBack時には、「DropDownList には複数の項目を選択できません」という エラーが発生してしまいまいます。 理由も回避方法も分からなくて困っています。サーバ側ではDropDownListの 選択行を設定する事は止めてJavaScriptでクライアント側でやらせなくては ならないのでしょうか?
| ||||
|
投稿日時: 2003-07-28 17:46
直前で
DropDownList1.SelectedIndex = -1; を入れて下さい。 | ||||
|
投稿日時: 2003-07-28 17:48
ハヤさん、こんにちわ。
つい最近、VB.NETで開発している時に同じ状況を経験してました。 Page_Load時に一度選択済アイテム(value2)を設定していますので、 ボタンクリック時にそれを解除していないと既に選択しているアイテムが存在すると 認識するようです。 ですので、当方では以下のように必要に応じて選択済アイテムを一度解除してから 選択するようにしています。 # VB.NETですので読み替えてください。 <!-- BBCode Start --><TABLE BORDER="0" ALIGN="CENTER" WIDTH="90%" CELLSPACING="0" CELLPADDING="0"><TR><TD WIDTH="5%" NOWRAP><FONT SIZE="-1">コード:</FONT></TD><TD WIDTH="95%"><HR SIZE="1" WIDTH="100%"></TD></TR><TR><TD COLSPAN="2"><PRE> Dim liOldSelect As ListItem For Each liOldSelect In DropDownList1.Items If (liOldSelect.Selected) Then liOldSelect.Selected = False End If Next DropDownList1.Items.FindByValue("value3").Selected = True </PRE><HR SIZE="1" WIDTH="100%"></TD></TR></TABLE><!-- BBCode End --> もっとスマートな方法があるかもしれません。 ご存知の方、フォローお願いしますm(__)m # 一歩違いでしたね(^^; # cats氏、当方も早速参考にさせて頂きました。ありがとうございます。 [ メッセージ編集済み 編集者: はぐれコ〜ギ〜 編集日時 2003-07-28 17:52 ] | ||||
|
投稿日時: 2003-07-28 19:01
cats様、はぐれコ〜ギ〜様、回答ありがとうございます。
お二方の方法で試してみたところ、きちんとできました。 ありがとうございます。
>はぐれコ〜ギ〜様 >Page_Load時に一度選択済アイテム(value2)を設定していますので、 >ボタンクリック時にそれを解除していないと既に選択しているアイ >テムが存在すると認識するようです。 なるほど、理解しました。PostBack時にDropDownListの値は、Mr.ADO.NET様が 「プログラミングASP.NET第2回の記事について( http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1318&forum=7) 」で述べられているとおり、IPostBackDataHandlerにて復元されるわけですね? この自動状態管理処理でPostBack前の状態に戻す処理はどこか目で確認できる ものなのでしょうか? | ||||
|
投稿日時: 2004-08-31 18:55
古いものを引っ張りだして申し訳ありませんが同内容?で困っております
ご教授ください。 複数のドロップダウンを並べているのですが。 //-------------------------------------------------------------- this.DropDownList1.SelectedIndex = -1; this.DropDownList1.Items.FindByValue("value1").Selected = true; this.DropDownList2.SelectedIndex = -1; this.DropDownList2.Items.FindByValue("value2").Selected = true; this.DropDownList3.SelectedIndex = -1; this.DropDownList3.Items.FindByValue("value3").Selected = true; //------------------------------------------------------------- としますが、「DropDownList には複数の項目を選択できません」のエラーになってしまいます。 よろしくお願いします。 | ||||
|
投稿日時: 2004-08-31 19:49
.Items.FindByValue("value1").Selected = true;
この記述はListBoxの複数選択モードで使いますが、DropDownListは複数選択できませんので 使うのは変です。 DropDownList1.SelectedValue = "value1"; とすればよいです。 |
1