C # CheckBoxList Foreach элемент не обновляется - PullRequest
0 голосов
/ 11 октября 2011

У меня есть список флажков, который не обновляется при циклическом прохождении.

<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), чтобы не связывать его снова. Я озадачен, почему это не работает.

Ответы [ 3 ]

1 голос
/ 11 октября 2011

Моя лучшая догадка, если отладчик говорит вам, что он поступает правильно, так это то, что в какой-то момент после этого на странице вызывается метод DataBind(). Это вызовет DataBind для всех дочерних элементов, включая этот элемент управления. Затем он будет привязан к источнику данных, потеряв ваши изменения.

Как уже говорили другие, вы, вероятно, хотите изменить свой список, который вы привязываете к данным, а не сам список. Либо измените цикл так, чтобы он перебирал ваши listRoles, а затем привязывал данные после этого, либо заставьте ваш AdminRole.GetRolesList возвращать правильные данные (возможно, с помощью перегрузки, если необходимо).

1 голос
/ 11 октября 2011

Этот текст и ценность, которую я люблю!Но похоже, что вы переназначаете значения?Вы уже связали это.

foreach (ListItem listItemRoles in cblRoles.Items)
{
    listItemRoles.Selected = true;
}
0 голосов
/ 11 октября 2011

Выполните привязку данных после foreach .-

Давиде Пирас также имеет точку зрения, но, возможно, это только пример того, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...