2016-09-08 4 views
0

У меня есть GridView, заполненный XML-файлом. Я добавил в этот список столбец id = chkRow. Существует более 100 записей/строк.Получить проверочное значение флажка внутри GridView

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

Я успешно понял, как увеличивать целое число при каждом изменении флажка, но он продолжает увеличиваться, даже если я сниму отметку.

Итак, теперь я хочу увеличить инкремент, если выбранная строка Checked = true и уменьшена при проверке = false.

Я не могу понять, как получить проверенное состояние флажка, который был просто нажат.

Этот код генерирует исключение NullReferenceException, когда я нажимаю на любой флажок.

protected void MyCheckBoxes_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      CheckBox chk1 = (CheckBox)GridView1.HeaderRow.FindControl("chkRow"); 
       Label1.Text = mycount.ToString(); 
       if(chk1.Checked == true) 

         { 
          Increment(); 
         } 

     } 
+0

Отъезд 'sender' объект. Для таких событий этот объект является элементом управления, для которого предназначен это событие. [Дополнительная информация.] (Http://stackoverflow.com/a/1303176/3711928) –

ответ

0

Попробуйте это. (Предполагается, что ваши флажки в первом столбце)

 private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e) 
     { 
     int checks = 0; 
     foreach (DataGridViewRow Row in dataGridView1.Rows) 
     { 
      if (Convert.ToBoolean(Row.Cells[0].Value) == true) 
       checks++; 
     } 
      if (checks == 3 && Convert.ToBoolean(dataGridView1.CurrentCell.Value == false) 
       return; 
     } 
0

Вы можете найти Checkbox:

int checks=0; 
foreach (GridViewRow row in GridView1.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox); 
     if (chkRow.Checked) 
     { 

       checks++; 
     } 
      if (checks == 3) 
       return; 
     } 
    } 
} 
Смежные вопросы