【问题标题】:Uncheck all values in dynamically populated CheckBoxList取消选中动态填充的 CheckBoxList 中的所有值
【发布时间】:2023-03-16 06:29:02
【问题描述】:

我正在从数据库表中填充 CheckBoxList。根据要求,所有值都应取消选中为默认值。即使我编写了代码来做同样的事情,第一个值总是被检查,我不知道为什么。代码如下:

for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
    CheckBoxList1.Items.RemoveAt(i);
while (rd.Read())
{
    System.Web.UI.WebControls.ListItem item = new ListItem(Convert.ToString(rd["FullName"]), Convert.ToString(rd["ContactID"]));
    CheckBoxList1.Items.Add(item);
}
con.Close();
for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
    CheckBoxList1.Items[i].Selected = false;      

一旦页面被回发,所有的值都不会被选中。 欢迎任何帮助和建议,谢谢。

【问题讨论】:

    标签: asp.net checkboxlist


    【解决方案1】:

    试试这个: CheckBoxList1.Items[i].Checked = false;

    【讨论】:

    • 不能使用它,因为它给出了错误:“'System.Web.UI.WebControls.ListItem' 不包含 'Checked' 的定义并且没有扩展方法 'Checked' 接受第一个参数可以找到“System.Web.UI.WebControls.ListItem”类型的“
    • 或者尝试把方法放到Pre_Init或者Pre_render方法中
    • System.Web.UI.WebControls.ListItem 类没有检查属性,右键解析不起作用。
    • CheckBoxList1 在 PreInit 中没有定义,它是空的。
    • 你能告诉我你是如何创建复选框列表并将其添加到标记中的吗?
    【解决方案2】:
    for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
              CheckBoxList1.Items[i].Selected = false;
    

    只是一个想法,但是;这个循环真的有效吗?因为您的停止条件是当 i 大于 0 时。从循环开始就应该是这样。我认为你的停止条件应该是 i=0。

    就像 bdz 所说,使用 items[].checked 来代替。

    【讨论】:

    • 循环正常,如果项目数为4,则i从3变为0。
    • 好的,我觉得这很奇怪,但很棒:) 它是否适用于 items[].checked?
    • 否 :-( Checked 未在 ListItem 上定义
    • 它实际上不应该...... ;) 我现在正在阅读文档,并且 item[].selected 应该可以工作。我想。尝试以不同的方式循环,这是我唯一能想到的。
    • 这是一个很老的帖子,但也许它可以提供帮助:codeproject.com/Articles/8105/…
    【解决方案3】:

    尝试更改您的这一部分:

     for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
              CheckBoxList1.Items[i].Selected = false;  
    

    到这里:

     foreach(ListItem i in CheckBoxList1.Items)
     {
         i.Selected = false;
     }
    

    【讨论】:

      【解决方案4】:

      发生这种情况是因为 UpdatePanel。一旦我删除它,代码就可以毫无问题地开始工作。

      【讨论】:

        【解决方案5】:

        CheckBoxList1.ClearSelection()

        这适用于 Asp.Net Framework 4.5 我没有在其他框架上尝试过

        【讨论】:

          【解决方案6】:
          foreach (int index in this.CheckedListBox1.CheckedIndices)
          {
              this.CheckedListBox1.SetItemChecked(index, false);
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-11-22
            • 2016-02-29
            • 1970-01-01
            • 1970-01-01
            • 2023-01-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多