2012-06-17 2 views
2

Я разрабатываю приложение в C#, в котором я использую DataGridView и GridView первый столбец содержит флажки, и я хочу Chech флажок правда или нет, но это дает мне исключение " Объект referernce не установлен в экземпляр объекта '. Код указан нижеУстановите флажок GridView колонки

private void btnDelete_Click(object sender, EventArgs e) 
     { 
      StudentDAL s = new StudentDAL(); 

      try 
      { 
       for (int i = 0; i < this.dataGridView1.RowCount; i++) 
       { 

        if (!DBNull.Value.Equals(this.dataGridView1.Rows[i].Cells[0]) && (bool)this.dataGridView1.Rows[i].Cells[0].Value == true) 
        { 

         s.delete(Convert.ToInt32(this.dataGridView1.Rows[i].Cells[1].Value)); 
         i--; 

        } 

       } 
       this.dataGridView1.DataSource = s.getAll(); 

      } 
      catch (Exception nn) 
      { 


      } 


     } 

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

+0

вы должны получить контроль флажок сначала ' FindControl() 'метод затем проверить, если он проверил или не –

ответ

0

Сначала вы должны найти свой контроль CheckBox, то вы можете проверить это проверено или не нравится:

Int32 i; 
    CheckBox k; 

    for (i = 0; i < GridView1.Rows.Count; i++) 
     { 
      k = ((CheckBox)(GridView1.Rows[i].Cells[0].FindControl("chk"))); 
      if (k.Checked == true) 
      { 
       //your code here 
      } 
      else 
      { 
       //your code here 
      } 
     } 
0

Вы пытаетесь ссылаться на объект, который не был инициализирован (я считаю, в данном случае Роу [я]).

Попробуйте положить контрольную точку внутри для цикла и пошагово (F10) и проверить, какую позицию я нахожусь, когда он бросает исключение.

+0

на первый раз он проверяет состояние он бросает исключение – Billz

+0

вы можете разместить трассировки стека? –

0

Добавить еще валидация

foreach (DataGridViewRow rw in this.dataGridView1.Rows) 
{ 
    if (rw.Cells.Count > 2 && 
     rw.Cells[0].Value != DBNull.Value && String.IsNullOrWhiteSpace(rw.Cells[0].Value.ToString()) && 
     ((bool)rw.Cells[0].Value) && 
      rw.Cells[1].Value != DBNull.Value && String.IsNullOrWhiteSpace(rw.Cells[1].Value.ToString())) 
    { 
      s.delete(Convert.ToInt32(rw.Cells[1].Value)); 

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