CheckboxList not setting Selected with Viewstate disabled

六眼飞鱼酱① 提交于 2020-01-03 18:49:28

问题


I have a CheckboxList that seems to load and do everything right, except for when I do a postback, it will not have the Item.Selected property set. I have viewstate disabled for the entire page.

I load it like so(inside Page_Load on every load):

foreach (DataRow service in d.Tables[0].Rows)
{
  cblServices.Items.Add(new ListItem((string)service["description"], service["id"].ToString()));
}

My markup is simple:

<asp:CheckBoxList runat="server" ID="cblServices" Width="300px"></asp:CheckBoxList>

and then, I use basically something like this(in a _Click serverside event for a button)

foreach(ListItem item in cblServices.Items){
  if(item.Selected){
    MyLabel.Text+="selected: "+item.Value+item.Text;
  }
}

and MyLabel never has any text added to it. I can verify with the debugger that it does reach the _Click's foreach loop, but no item is ever selected. What could be the cause of this?


回答1:


If you're filling it on every Page_Load call, not only when Page.IsPostback = false then you're reseting the client selection on postback.

EDIT You should add your items on the PreInit or Init event, then you'll be able to keep the selected items correctly.

protected void Page_Init(object sender, EventArgs e)
{
    foreach (DataRow service in d.Tables[0].Rows)
    ...
}


来源:https://stackoverflow.com/questions/2724771/checkboxlist-not-setting-selected-with-viewstate-disabled

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!