Циклический просмотр данных и чтение значения CheckBoxColumn - PullRequest
2 голосов
/ 09 апреля 2011

У меня есть сетевое представление с одним DataGridViewCheckBoxColumn и некоторыми другими столбцами TextBox.Я хочу пройтись по каждой ячейке и посмотреть, если флажок установлен, то сделать что-то.Я использую следующий метод зацикливания.Есть ли лучший способ сделать ??

Я использовал или условие, потому что на некоторых компьютерах он приносит .Value как проверено, а на некоторых он приносит .Value как правда.

     foreach (DataGridViewRow row in dataGridView.Rows)
                {
                    if ((bool)(row.Cells["Checkbox"]).Value || (CheckState)row.Cells["Checkbox"].Value == CheckState.Checked)
                    {   
                        // Do something
                    }

                }

Заранее спасибо.

Ответы [ 4 ]

4 голосов
/ 09 апреля 2011

я думаю, что это будет быстрее, чем foreach

 for (int i = 0; i < dataGridView.Rows.Count -1; i++)
 {
    DataGridViewRow row = dataGridView.Rows[i];
    if ((bool)(row.Cells["Checkbox"]).Value 
        || (CheckState)row.Cells["Checkbox"].Value == CheckState.Checked)
    {
         // Do something
    }
 }
1 голос
/ 13 апреля 2011

Это сработало для меня, используя следующий код:

 foreach (DataGridViewRow row in dgv_labelprint.Rows)
 {
     if (value.Value == null)
     {

     }
     else 
       if ((Boolean)((DataGridViewCheckBoxCell)row.Cells["CheckBox"]).FormattedValue)
       {
          //Come inside if the checkbox is checked
          //Do something if checked
       }

 }
1 голос
/ 09 апреля 2011

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

Это событие полезно при работе с флажками, поскольку пользователи иногда нажимают кнопку проверки, а затем не фиксируют изменения, щелкая где-то еще.

В прошлом это работало хорошо для меня.

0 голосов
/ 28 февраля 2014
int subId;   

List<int> olist= new List<int>();   

for (int i = 0; i < gvStudAttend.Rows.Count; i++) 
{       
   bool Ischecked = Convert.ToBoolean(gvStudAttend.Rows[i].Cells["Attendance"].Value);   
   if (Ischecked == true)    
   {   
      subId = gvStudAttend.Rows[i].Cells["SubjectID"].Value.ToString();   
      olist.Add(subId );   
   }   
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...