CheckboxList未设置选中,禁用Viewstate

时间:2010-04-27 20:20:28

标签: c# asp.net postback checkboxlist

我有一个CheckboxList似乎加载并做了一切正确的事情,除了当我做回发时,它不会设置Item.Selected属性。我有整个页面的viewstate禁用。

我像这样加载它(在每次加载时都在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的foreach循环,但是没有选择任何项目。可能是什么原因造成的?

1 个答案:

答案 0 :(得分:3)

如果您在每次Page_Load调用时都填写它,那么不仅在Page.IsPostback = false时,您将在回发时重置客户端选择。

修改 您应该在PreInit或Init事件中添加项目,然后您将能够正确保留所选项目。

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