item.Selected在checkboxlist被禁用时为false。

11 浏览
0 Comments

item.Selected在checkboxlist被禁用时为false。

我有一个复选框列表,其中某些项目对于某些用户是禁用的。

当我点击“保存”时,执行下面的代码。

然而,尽管这些项目是选定的,但item.Selected评估为false。

有没有办法解决这个问题?

0
0 Comments

问题的原因是,当CheckBoxList被禁用时,如果通过aspnet在代码后台或.aspx页面中添加ListItems,ViewState会将这些禁用的复选框视为已选中,即使它们没有发送到服务器。

解决方法是,在遍历CheckBoxList的ListItems时,需要添加一个条件判断,判断该项是否被选中并且是否被禁用。只有当该项既被选中又被禁用时,才将其添加到selectedValues列表中。

以下是修改后的代码示例:

protected void Button1_Click(object sender, EventArgs e)
{
    List selectedValues = new List();
    Label1.Text = "";
    foreach (ListItem item in myCheckBoxList.Items)
    {
        if (item.Selected && !item.Enabled)
        {
            selectedValues.Add(item.Value);
            Label1.Text += item.Value + "";
        }
    }
}

完整的示例代码如下:




    
    
    
    
    



之前我已经测试过,可以保证这个解决方法有效。也许你的问题出现在ListItems的绑定上。

0
0 Comments

当CheckboxList被禁用时,item.Selected的值为false的原因是禁用的输入框不会被提交到服务器,因此它们的默认值会被设置为false。解决方法是可以使用HiddenField与每个复选框关联,并根据其选择状态设置HiddenField的值。

禁用的输入框永远不会被提交到服务器,但这并不意味着aspnet不会将其识别为已选中。

如果根本没有提交,那怎么能被识别为已选中呢?

谢谢。我之前没有意识到它们没有被提交到服务器。现在我有一个解决方法了。谢谢。

0