2009-12-19 1 views
0

У меня есть список Checkbox в моей странице и ее источник данных установлен в программно преднагрузки() событие:Как получить обновления (измененные элементы) Из списка CheckboxList?

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; 
    } 
} 

} 

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

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 до сих пор старые элементы и если флажки изменения пользователя не эффект apeares в SelectedNokIds. Почему ???

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

ответ

0

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

+0

спасибо за ваш ответ, но Unfotunatlly это все, что вы не видите, где переустанавливать Datasource. только в PerLoad(). – mahdiahmadirad

0

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

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

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

Смежные вопросы