前提・実現したいこと
ASP.NET C#で、チェックボックスリストに以下の挙動を付けたいです。
① CheckBoxList(Id=ch1)はDBから汲み上げた項目で、Text=(全て)、1、2、3...と続くようにしている。AutoPostBackでチェックボックスを制御。
② (全て)のチェックボックスにチェックがついた際、その他のチェックボックスを非活性かつチェックをつける
③ (全て)のチェックボックスのチェックが外れた際、その他のチェックボックスを活性かつチェックを外す
④ ③のとき、チェックボックス1、チェックボックス2、チェックボックス3、の各自にチェックがつけられるようにする。
発生している問題
現在、④を再現できなくて困っています。恐らく③の影響でチェックボックス1,2,3にチェックを入れてもAutoPosyBackでチェックが外れてしまいます。
該当のソースコード
C#
1public void chl_SelectedIndexChange(object sender, EventArgs e) 2 { 3 CheckBoxList chl = (CheckBoxList)FindControl("chl"); 4 ListItemCollection collection = chl.Items; 5 ListItem itemAll = collection.FindByText("(全て)"); 6 ListItem item1 = collection.FindByText("1"); 7 ListItem item2 = collection.FindByText("2"); 8 ListItem item3 = collection.FindByText("3"); 9 10 //判定条件1:(全て)がチェックのとき、その他ボックスは編集不可かつチェックを入れる。 11 if (itemAll.Selected == true) 12 { 13 item1.Selected = true; 14 item2.Selected = true; 15 item3.Selected = true; 16 item1.Enabled = false; 17 item2.Enabled = false; 18 item3.Enabled = false; 19 } 20 else //判定条件2:(全て)にチェックがないとき、その他ボックスは編集可能かつチェックを外す。 21 { 22 item1.Selected = false; 23 item2.Selected = false; 24 item3.Selected = false; 25 item1.Enabled = true; 26 item2.Enabled = true; 27 item3.Enabled = true; 28 } 29 //判定条件3を追加する?:item1,item2,item3にチェックを入れた際、そのチェックを保持したい(現状、判定条件2によってチェックが外れてしまう)。 30 }
試したこと
サーバーコントロールをチェックボックスリストではなくチェックボックスにした際はうまくいきましたが、SQLServerのDBから項目を汲み上げているので、何とかチェックボックスリストで再現したいです。
補足情報(FW/ツールのバージョンなど)
質問者:ASP.Net、C#ともに触れて1カ月の超初心者。
使用環境:Visual Studio2017、.NET Framework4.6.2以降
毎度拙い質問で申し訳ございません。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー