2013-06-28 2 views
0

Всякий раз, когда я нажимаю флажок и смотрю на измененное значение значения ячейки, значение всегда ложно, если флажок был первоначально снят и всегда истинным, если флажок был первоначально установлен ...Управление флажком RadGridView всегда ложно

Обновление: Итак, когда я устанавливаю флажок - и тогда ячейка теряет фокус, она возвращается обратно в исходное состояние - но не знаю почему ???

Почему это и как мне обойти это?

private void CellValueChanged(object sender, GridViewCellEventArgs e) 
     { 
//e.Value always false or true depending on original state 
} 

Update:

Наполнение GridView

public void PopulateEvents(User user) 
     { 
      if (user.EventSubscriptions.Count < 1) 
       AddDefaultEvents(user); 

      var query = user.EventSubscriptions.Join(sp.Events, r => r.EventId, p => p.EventId, (r, p) => 
       new { r.UserId, r.EventSubscriptionId, p.EventType, p.EventAction, r.IsAlert, r.IsEmail, r.AlertLevel }) 
       .Where(pr => pr.UserId == user.ID); 

      BindingSource temp = new BindingSource() { DataSource = query }; 
      RGVAlerts.DataSource = temp; 

      //RGVAlerts.DataSource = query; 

      foreach (var column in RGVAlerts.Columns) 
      { 
       switch (column.HeaderText) 
       { 
        case "EventType": 
         column.HeaderText = "Category"; break; 
        case "EventAction": 
         column.HeaderText = "Event Action"; break; 
        case "IsAlert": 
         column.HeaderText = "Send Alert"; 
         column.ReadOnly = false; 
         break; 
        case "IsEmail": 
         column.HeaderText = "Send Email"; 
         column.ReadOnly = false; break; 

        case "AlertLevel": 
         column.HeaderText = "Alert Level"; break; 
       } 
      } 
      RGVAlerts.Columns.Remove("UserId"); 
      RGVAlerts.Columns.Remove("AlertLevel"); 
      RGVAlerts.Columns.Remove("EventSubscriptionId"); 

      GridViewComboBoxColumn comboLevel = new GridViewComboBoxColumn(); 
      comboLevel.DataSource = new string[] { "INFORMATION", "MILD", "SEVERE", "COUNT" }; 

      RGVAlerts.Columns.Add(comboLevel); 
      comboLevel.FieldName = "AlertLevel"; 
      comboLevel.HeaderText = "AlertLevel"; 

      RGVAlerts.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.None; 
      foreach (GridViewDataColumn column in RGVAlerts.Columns) 
      { 
       column.BestFit(); 
       column.Width += 58; 

      }; 
      RGVAlerts.AllowCellContextMenu = true; 
      RGVAlerts.AllowEditRow = true; 
      RGVAlerts.CausesValidation = true; 

      RGVAlerts.Refresh(); 
     } 
+1

Выглядит как связывание неверно. можете ли вы показать код, который вы используете для инициализации сетки? – RAS

+0

обновит вопрос – jharr100

ответ

1

Редактор флажок в RadGridView является постоянным редактором и значение ячейки будет изменяться только при изменении текущей ячейки. Для того, чтобы заставить изменения значения, когда пользователь проверяет флажок, вы должны подписаться на событие ValueChanged из RadGridView и вызвать метод EndEdit:

void radGridView1_ValueChanged(object sender, EventArgs e) 
{ 
    if (radGridView1.CurrentColumn.Name == "MyCheckBoxColumnName") 
    { 
     radGridView1.EndEdit(); 
    } 
}