4

我有一个 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 的 foreach 循环,但没有选择任何项目。这可能是什么原因?

4

1 回答 1

3

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

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

protected void Page_Init(object sender, EventArgs e)
{
    foreach (DataRow service in d.Tables[0].Rows)
    ...
}
于 2010-04-27T20:23:50.720 回答