Asp.net 取消选中动态填充复选框列表中的所有值

Asp.net 取消选中动态填充复选框列表中的所有值,asp.net,checkboxlist,Asp.net,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

我正在从数据库表填充一个复选框列表。根据要求,所有值都应取消选中,并为默认值。尽管我已经编写了代码来执行同样的操作,但始终会检查第一个值,我不知道为什么。代码如下:

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;      
一旦页面被发回,所有值才被取消选中。 欢迎提供任何帮助和建议,谢谢。

试试以下方法: CheckBoxList1.Items[i].Checked=false

for (int i = CheckBoxList1.Items.Count - 1; i >= 0; i--)
          CheckBoxList1.Items[i].Selected = false;
只是一个想法,但是;这个循环真的有效吗?因为你的停止条件是当i大于0时。从循环的开始就应该如此。我认为你的停止条件应该是I=0


正如bdz所说,使用items[]。改为checked。

尝试更改您的这一部分:

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

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

发生这种情况是因为UpdatePanel。一旦我删除了它,代码就可以正常工作了

复选框列表1.ClearSelection()

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

循环正在运行,如果项目数为4,我从3变为0。好吧,我认为这很奇怪,但很好:)它对项目[]有效吗?选中?否:-(选中在列表项目上没有定义它实际上不应该…;)我现在正在阅读文档,项目[]。选中的应该有效。我想。尝试以不同的方式循环,这是我唯一能想到的。这是一篇非常古老的帖子,但可能会有所帮助:不能使用它,因为它会产生错误:“'System.Web.UI.WebControl.ListItem'不包含'Checked'的定义,并且找不到接受'System.Web.UI.WebControl.ListItem'类型的第一个参数的扩展方法'Checked'“或者尝试将该方法置于Pre_Init或Pre_render methodSystem.Web.UI.WebControl.ListItem类中。如果属性未选中,则右键单击“解析”不起作用。CheckBoxList1未在PreInit中定义,它为null。您可以告诉我如何创建复选框列表并将其添加到标记中吗?”?
foreach (int index in this.CheckedListBox1.CheckedIndices)
{
    this.CheckedListBox1.SetItemChecked(index, false);
}