我有一个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循环,但是没有选择任何项目。可能是什么原因造成的?
答案 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)
...
}