- - PR -
ラジオボタンリストの属性追加(Attributes)について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-14 14:15
いつもお世話になっています。ジョン吉です。
ラジオボタンリストの挙動で質問です。 下記のようなradiobuttonlist を定義しました。 初回表示時に DBの状態を見て、リストのパターンを変更しなければなりません 例えば DBの値=1 aaa,bbb,ccc のみ表示する 必須選択 DBの値=2 eee,fff,ggg のみ表示する 必須選択 DBの値=3 hhh のみ表示で 必須選択ではない <ASP:RADIOBUTTONLIST id="radio状態" runat="server" repeatdirection="Horizontal" font-size="X-Small" repeatlayout="Flow"> <ASP:LISTITEM value="0">aaa </ASP:LISTITEM> <ASP:LISTITEM value="1">bbb </ASP:LISTITEM> <ASP:LISTITEM value="2">ccc </ASP:LISTITEM> <ASP:LISTITEM value="3">eee </ASP:LISTITEM> <ASP:LISTITEM value="4">fff </ASP:LISTITEM> <ASP:LISTITEM value="5">ggg </ASP:LISTITEM> <ASP:LISTITEM value="6">hhh </ASP:LISTITEM> </ASP:RADIOBUTTONLIST> そこで、デザインはプロパティウインドウで、予め全てのアイテムを追加しておき、 Page_Load で、かく要素の表示/非表示 を設定しようと思いました。 このようにして select case DBの値 case 1 radio状態.Items(3).Attributes.Add("style", "display:none") radio状態.Items(4).Attributes.Add("style", "display:none") radio状態.Items(5).Attributes.Add("style", "display:none") radio状態.Items(6).Attributes.Add("style", "display:none") case 1 radio状態.Items(0).Attributes.Add("style", "display:none") radio状態.Items(1).Attributes.Add("style", "display:none") radio状態.Items(2).Attributes.Add("style", "display:none") radio状態.Items(6).Attributes.Add("style", "display:none") case else radio状態.Items(0).Attributes.Add("style", "display:none") radio状態.Items(1).Attributes.Add("style", "display:none") radio状態.Items(2).Attributes.Add("style", "display:none") radio状態.Items(3).Attributes.Add("style", "display:none") radio状態.Items(4).Attributes.Add("style", "display:none") radio状態.Items(5).Attributes.Add("style", "display:none") end case が、実際に出力されるHTML(inputタグ)にはこのスタイルが出力されていません。 実行時にエラーになりませんし、Page_Load の最後で、内容を確認したところ、 きちんと radio状態.Items(5).Attributes.Item("style") には "display:none" と設定されています。 これは、Attributes プロパティは用意しているが、サポートしていないということでしょうか? (動作環境は Windows2000 Server SP4 + .NetFramwork1.1 SP1 + VisualStudio2003 + IE 6.0.2800 SP1 です。) |
|
投稿日時: 2005-03-14 23:36
http://support.microsoft.com/default.aspx?scid=kb;ja-jp;Q309338
[BUG]ということみたいですね。 DropDownListのは知っていましたがRadioButtonListもだったんですね。 DropDownListはHtmlSelectで代用しRadioButtonListの場合はHtmlInputRadioButtonを 並べてくれといってます。。 DropDownListで項目ごとに色つけたい時とかはHtmlSelect使ってますが。 [ メッセージ編集済み 編集者: べる 編集日時 2005-03-15 00:06 ] |
|
投稿日時: 2005-03-15 12:54
ありがとうございます。
そうですか不具合ですか〜 結構使ってしまってるんで、入れ替えるの大変です。 ここや、GotDotNetばかりみてましたが、MSのサポートもチェックしないとだめなんですね。 (といいますか、最初に見るのはメーカサイトですよね ふつう......。) ともかく、入れ替えがんばります。 ありがとうございました。 |
|
投稿日時: 2005-03-15 23:38
ただ表示を制御したいだけならcaseの前で
radio状態.Items.Clear() しといて、必要に応じて radio状態.Items.Add("aaa"); とかするのはだめでしょうか。display:noneのinputが出力されないといけないんなら だめですがね・・ |
|
投稿日時: 2005-03-16 09:37
表示/非表示とは別のカラムに、このラジオボタンの値を持ってまして、
その値というのが各ラジオボタンのValueに設定されています。 しかも、そのValue=Itemsのインデックスにしています で、 index=DBの値 radio状態.Items(index).selected=true や 選択状態=radio状態.selectedvalue みたいなことをすれば、簡単かな〜 と思った次第であります。 っと、ここで思ったのが、 index=DBの値 radio状態.Items(index).selected=true この部分も radio状態.selectedvalue=DBの値 とすれば、itemsのindexと無理にValueを合わせなくてもいいのかな? そうすれば、ベルさんがアドバイスしてくれたコードでいけそうです。 ちょっと実験してみます。 |
|
投稿日時: 2005-03-16 12:11
実験結果の自己レスです
できちゃいました。 selectedValue にDBの値を設定すれば、そのラジオボタンが選択状態になり、 また、選択したラジオボタンは selectedvalue で取り出せるので、 items のインデックスとDBに格納する値とを同期とることも不要となり、 常に全部のラジオボタンを作成し、表示/非表示 でごまかす必要もなくなりました。 初回表示時に、不要なラジオボタンを削除してしまうだけでOKでした。 みなさんありがとうございました。 |
1