ポストバックを行う場合を除き、すべてを正しく実行するように見えるCheckboxListがありますが、 Item.Selected
プロパティセット。ページ全体でビューステートを無効にしています。
そのようにロードします(内部 Page_Load
すべての負荷で):
foreach (DataRow service in d.Tables[0].Rows)
{
cblServices.Items.Add(new ListItem((string)service["description"], service["id"].ToString()));
}
私のマークアップは簡単です:
<asp:CheckBoxList runat="server" ID="cblServices" Width="300px"></asp:CheckBoxList>
そして、私は基本的にこのようなものを使用します(ボタンの_Clickサーバーサイドイベントで)
foreach(ListItem item in cblServices.Items){
if(item.Selected){
MyLabel.Text+="selected: "+item.Value+item.Text;
}
}
MyLabelにテキストが追加されることはありません。デバッガーで_Click "s foreachループに到達することを確認できますが、アイテムが選択されていません。この原因は何ですか?
回答:
回答№1の場合は3「Page_Loadの呼び出しごとにデータを入力する場合は、 Page.IsPostback = false
その後、ポストバックでクライアント選択をリセットしています。
EDIT PreInitイベントまたはInitイベントでアイテムを追加する必要があります。そうすると、選択したアイテムを正しく保持できます。
protected void Page_Init(object sender, EventArgs e)
{
foreach (DataRow service in d.Tables[0].Rows)
...
}