Как получить обновления (измененные элементы) из CheckboxList? - PullRequest
0 голосов
/ 19 декабря 2009

У меня есть список флажков на моей странице, и его источник данных установлен программно в событии PreLoad ():

protected void Page_PreLoad()
{
        if (!Page.IsPostBack)
        {
        CheckBoxList1.DataSource = NoK.AcceptedNoks((Guid)Membership.GetUser().ProviderUserKey);
        CheckBoxList1.DataTextField = "FullName";
        CheckBoxList1.DataValueField = "NoKId";
        CheckBoxList1.DataBind();
        }
foreach (ListItem chk in CheckBoxList1.Items)
{
    if (PrivateMessage.HasAccess(Request.QueryString["MessageId"], chk.Value))
    {
        chk.Selected = true;
    }
}

}

, как вы видите в foreach, проверит, должен ли элемент проверяться или нет. и это работает хорошо. это означает, что конечный пользователь может редактировать элементы списка, и по умолчанию некоторые элементы были проверены. Теперь я хочу получить предметы, нажав кнопку:

protected void UpdateRightBtn_Click(object sender, EventArgs e)
{
    var SelectedNokIds =
        CheckBoxList1.Items
        .OfType<ListItem>()
        .Where(li =>
            li.Selected == true)
            .Select(l => new Guid(l.Value));
}

, но элементы в SelectedNokIds все еще являются старыми элементами, и если флажки смены пользователя не действуют, SelectedNokIds Почему ???

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2009

foreach (ListItem chk в CheckBoxList1.Items) {if (PrivateMessage.HasAccess (Request.QueryString ["MessageId"], chk.Value)) {chk.Selected = true; }}

Эта строка запускается при каждой загрузке страницы, чтобы сбросить выбор (по крайней мере, те, которые установили selected в true). Разве это не должно быть внутри! Page.IsPostback тоже? А в кнопке обновления вы можете привязать туда ...

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

0 голосов
/ 19 декабря 2009

Похоже, это потому, что вы заново устанавливаете значения при обратной передаче, эффективно очищая выбор пользователя. Вам нужно только инициализировать значения, когда это не обратная передача.

...