2010-01-24 19 views
7

Mam tutaj dziwny problem.Pobierz wartość komórki pola wyboru DataGridView?

Mam 3 kolumny datagrid, które są wypełnione przez połączenie z bazą danych. Jak na razie dobrze.

Mam dodatkową kolumnę o typie pola wyboru. Muszę uzyskać jego wartość do perfekcji operacji zbiorczej na nim. Oto haczyk:

Po wybraniu wszystkich komórek działa poprawnie. Ale gdy użytkownik wybierze dowolną komórkę, która nie jest pierwszą, program daje mi wyjątek odwołania do obiektu.

Oto kod

public List<String> GetSelected() 
{ 
    List<String> selected = new List<String>(); 
    foreach(DataGridViewRow row in datagrid.rows) 
    { 
     if ((Boolean)row.Cells[wantedCell].Value == true) 
     { 
      selected.Add(row.Cells[anotherCell]); 
     } 
    } 
} 

I wytropił braku IF-testu, rzucanie wyjątku, ponieważ wartość komórki jest odczytywany jako null.

Dosyć?

Dzięki

+0

Która linia zgłasza wyjątek? – SLaks

+0

Szósta linia w tym kodzie. –

+0

Co to jest "wantedCell"? – SLaks

Odpowiedz

4

spróbuj tego:

public List<String> GetSelected() 
{ 
    List<String> selected = new List<String>(); 
    foreach(DataGridViewRow row in datagrid.Rows) 
    { 
     object value = row.Cells[wantedCell].Value; 
     if (value != null && (Boolean)value) 
     { 
      selected.Add(row.Cells[anotherCell]); 
     } 
    } 
} 
1

ta nie działa dla mnie (wyjątek został rzucony konwersji do Boolean).

Wierzę, że ta spełnia swoje zadanie:

foreach (DataGridViewRow row in dgv.SelectedRows) 
{ 
    bool b = row.Cells[0].Value == DBNull.Value ? false : (bool)row.Cells[0].Value; 
    ... 
} 
0

zamień wiersz 6 z if (row.Cells[wantedCell].Value == DBNull.Value ? false : (bool)row.Cells[wantedCell].Value == true), aby w ten sposób:

public List<String> GetSelected() 
{ 
    List<String> selected = new List<String>(); 
    foreach(DataGridViewRow row in datagrid.rows) 
    { 
     if (row.Cells[wantedCell].Value == DBNull.Value ? false : (bool)row.Cells[wantedCell].Value == true) 
     { 
      selected.Add(row.Cells[anotherCell]); 
     } 
    } 
} 
Powiązane problemy