CheckboxList未设置选中,禁用Viewstate

我有一个似乎加载并完成所有操作的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())); } 

我的标记很简单:

  

然后,我基本上使用这样的东西(在按钮的_Click服务器端事件中)

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

并且MyLabel从未添加任何文本。 我可以通过调试器validation它确实到达了_Click的foreach循环,但是没有选择任何项目。 可能是什么原因造成的?

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

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

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