CheckBoxList循环不起作用

时间:2014-07-26 06:54:58

标签: c# asp.net .net

我尝试根据数据源选择CheckBoxList控件中的值。我在CheckBoxList中有五个项目,在数据源中有三个项目,但在循环中我只选择了一个项目。

if (ddlUserId.SelectedIndex != 0)
{
   RoleDetails rd;
   rd = CatalogAccess.GetSingleUserRole(ddlUserId.SelectedValue.ToString());

   for (int i = 0; i < cblRoles.Items.Count; i++)
   {
      cblRoles.Items.FindByValue(rd.RoleID.ToString()).Selected = true;
   }
}

我试过这个,但它仍然只选择一个项目:

RoleDetails rd;

for (int i = 0; i < cblRoles.Items.Count; i++)
{            
   rd = CatalogAccess.GetSingleUserRole(ddlUserId.SelectedValue.ToString());

   if (cblRoles.Items[i].Value == rd.RoleID.ToString())
      cblRoles.Items[i].Selected = true;
}

CheckboxList绑定代码

  cblRoles.DataSource = CatalogAccess.GetRoles();
  cblRoles.DataTextField = "RoleDetails";
  cblRoles.DataValueField = "RoleId";
  cblRoles.DataBind();

1 个答案:

答案 0 :(得分:1)

当你使用for循环时,你需要使用索引值(这里是“i”),比如

 for (int i = 0; i < cblRoles.Items.Count; i++)
 {
   if(cblRoles.Items[i].Value == rd.RoleID.ToString())
           cblRoles.Items[i].Selected = true;
 }

或者你可以使用如下的foreach:

在这里,我使用foreach&amp; amp;创建了循环复选框列表的项目。 item将被选中id,其值将与RoleId匹配。

 foreach (ListItem li in cblRoles.Items)
    {
        if (rd.RoleID.ToString() ==  li.Value)
        {
            li.Selected = true;
        }
        else
        {
            li.Selected = false;
        }
    }