- - PR -
ASP.NETで2列にCheckBox
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-26 17:06
こんばんは。いつもお世話になっております。
開発環境は、 VS.NET2003 .NET Framework1.1 ASP.NET1.1 です。 今回の質問の内容ですが、DataGrid内に2列のチェックボックス列を作りまして、 行単位で、片方のチェックボックスがチェックされたら もう片方の列のチェックボックスのチェックを外す、という仕様にしたいのです。 │────────────────────〜 │CheckBox列1 │ CheckBox列2 │ │────────────────────〜 │■←Check=True│□←Check=False│ │────────────────────〜 │□←Check=False│■←Check=True│ │────────────────────〜 │ 2行目のCheckBox列1のチェックを付けた場合 ↓ │────────────────────〜 │CheckBox列1 │ CheckBox列2 │ │────────────────────〜 │■←Check=True│□←Check=False│ │────────────────────〜 │■←Check=True│□←Check=False│ │────────────────────〜 │ 瞬時に下行のCheckBox列2のチェックが消える 列ごとのチェックされた場所の取得は出来ました。 Dim Chk As CheckBox 'チェックボックス Dim Row As DataGridItem 'DataGridItem Dim Cname, Str1, Str2 As String 'ContorolName For Each Row In dgCList.Items Chk = CType(Row.FindControl("CheckBox1"), CheckBox) Cname = Chk.UniqueID If Request.Form(Cname) <> "" Then Chk.Checked = True End If Next ただ、データグリッド上というのもあって、チェックされた瞬間というのを 取得できるのかが分かりません。 ポストバックを走らせれば、片方のチェックが入っていた時に、 もう片方のチェックをFalseにしてやるということは出来そうですが、 ポストバックを走らせない(?)で、同じ行の両列のチェックを入れようとした際に、 もともとチェックが入っていたほうのチェックボックスのチェックを 外すというやり方は出来るのでしょうか? チェックチェックと読みづらくてすいません。 教えていただけると助かります。 宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2006-05-26 17:10
ポストバックなしでやるなら、クライアントサイド(JavaScript)で
書くしかないと思います。 | ||||||||||||
|
投稿日時: 2006-05-26 17:58
早いご返答ありがとうございます。 JavaScriptを記述するとすれば、ASP.NETの場合どこに書けばよろしいのでしょうか? aspxファイルのHTMLに記述する形になるのでしょうか? | ||||||||||||
|
投稿日時: 2006-05-26 18:09
でも良いでしょうし、.js ファイルとして分離しても良いでしょうし、 Attribute に直接書いてしまっても良いでしょうし(ry _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-05-26 18:31
ご返答ありがとうございます。
早速JavaScriptでの記述方法を調べたのですが、 (なにぶんJavaScriptの経験がほぼ無いもので・・・) ポストバックを走らせることなく、”チェックされたorチェック外された” のイベントを取得することは可能なのでしょうか? ASP.NETだとCheckedChangedイベントがありましたが・・・ データグリッド上だと、動的にCheckBoxが生成されるため 名前の取得も必要なのでしょうか。 質問ばかりで申し訳ないです。 | ||||||||||||
|
投稿日時: 2006-05-26 23:29
onclickかonchangeあたりですかね。
出力HTMLのソースみて生成されたチェックボックスのIDの規則性を見てみるといいです。 AttributesプロパティとかItemCreatedイベントがカギになるかな。 # って、ラジオボタンにするわけにはいかないのですか? | ||||||||||||
|
投稿日時: 2006-05-27 06:49
以下のサンプルが参考になるかと・・・
サーバー側で処理(Ajax対応): http://akiokasai.qsh.eu/Goto.aspx?id=060527-1 クライアント側で処理: http://akiokasai.qsh.eu/Goto.aspx?id=060527-4 GridViewを使用していますがDataGridも可能です。 Web Serverのレスポンスが遅いのでCheckBoxをクリックしてからGridViewが 表示されるまで2-3秒かかります。 _________________ ASP.NET+Ajaxサンプル集 [ メッセージ編集済み 編集者: Access 編集日時 2006-05-27 16:45 ] | ||||||||||||
|
投稿日時: 2006-05-27 19:09
NAL-6295です。こんばんは。
RadioButtonのGroupNameプロパティを利用すれば、何も難しいことをしなくても、 実現できる仕様だと思うのですが、チェックボックスじゃないといけない事情でも あるのでしょうか? |