我有一个复选框列表,没有通过它循环更新。
<asp:CheckBoxList ID="cblRoles" runat="server">
</asp:CheckBoxList>
非常简单,背后的代码:
List<ListItem> listRoles = AdminRole.GetRolesList(false);
cblRoles.DataSource = listRoles;
cblRoles.DataValueField = "Value";
cblRoles.DataTextField = "Text";
cblRoles.DataBind();
foreach (ListItem listItemRoles in cblRoles.Items)
{
listItemRoles.Enabled = true;
listItemRoles.Selected = true;
listItemRoles.Text = "test";
listItemRoles.Value = "test";}
复选框列表中的数据根本没有更新,即使逐步调试器似乎按预期工作。它确实在调用数据的函数中按预期显示列表。仅供参考,这是在(!isPostBack)
检查内部,因此它不再重新绑定它。我很难过为什么这不起作用。
答案 0 :(得分:1)
我最好的猜测,如果调试器告诉你它正在做正确的事情,那么在此之后的某个时刻页面正在调用它的DataBind()
方法。这将在包括此控件在内的所有子项上调用DataBind。然后,这将从数据源重新绑定,丢失您的更改。
正如其他人所说,你可能想要更改你的数据绑定列表,而不是列表本身。更改循环以循环遍历listRoles,然后在此之后进行数据绑定,或者使AdminRole.GetRolesList返回正确的数据(如果需要,可能通过重载)。
答案 1 :(得分:1)
那篇文字&amp;我爱的价值!但似乎你正在重新分配价值观?你确实绑定了它。
foreach (ListItem listItemRoles in cblRoles.Items)
{
listItemRoles.Selected = true;
}
答案 2 :(得分:-2)
在foreach之后做数据绑定.-
Davide Piras也有一个观点,但也许这只是你想要做的一个例子。