C# 复选框列表循环不工作
我试图根据数据源在C# 复选框列表循环不工作,c#,asp.net,.net,C#,Asp.net,.net,我试图根据数据源在复选框列表中选择值。我在复选框列表中有五项,在数据源中有三项,但在循环中我只选择了一项 if (ddlUserId.SelectedIndex != 0) { RoleDetails rd; rd = CatalogAccess.GetSingleUserRole(ddlUserId.SelectedValue.ToString()); for (int i = 0; i < cblRoles.Items.Count; i++) {
复选框列表中选择值。我在复选框列表中有五项,在数据源中有三项,但在循环中我只选择了一项
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;
}
}
当您使用for循环时,您需要使用索引值(这里是“i”),如
对您在答案中的建议以及OP中的代码没有获得所需结果的原因进行一点解释可能会有所帮助。仍然只选择了一项。我已发布代码。@ayha对于所选用户是否有多个角色?对于所选用户有三个角色,但它选择了第一个角色(表中的roleId 1)。我删除了表中的第一项并尝试了,然后它没有选择任何其他内容;rd=CatalogAccess.GetSingleUserRole(ddlUserId.SelectedValue.ToString());我认为这样你只能扮演一个角色。请确保您正在获取所有分配的角色。请共享复选框列表绑定代码我已发布绑定代码。您的复选框列表是否有多个值相同的复选框?只有一个RoleDetails对象,因此只有一个RoleID。因此,除非我的问题的答案是肯定的,否则您将只能选中一个复选框。
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;
}
cblRoles.DataSource = CatalogAccess.GetRoles();
cblRoles.DataTextField = "RoleDetails";
cblRoles.DataValueField = "RoleId";
cblRoles.DataBind();
for (int i = 0; i < cblRoles.Items.Count; i++)
{
if(cblRoles.Items[i].Value == rd.RoleID.ToString())
cblRoles.Items[i].Selected = true;
}
foreach (ListItem li in cblRoles.Items)
{
if (rd.RoleID.ToString() == li.Value)
{
li.Selected = true;
}
else
{
li.Selected = false;
}
}