2010-01-24 44 views
7

我在這裏遇到一個奇怪的問題。獲取DataGridView複選框的單元格值?

我有一個3列datagrid是由與數據庫連接填充。到現在爲止還挺好。

我有一個額外的列,複選框類型。我需要得到它對執行批量操作的價值。這裏有一個問題:

當所有單元格被選中時,它都能正常工作。但是當用戶選擇不是第一個的單元時,軟件會給我一個對象引用異常。

下面是代碼

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]); 
     } 
    } 
} 

我找到了失敗的原因是,如果檢驗,拋出一個異常,因爲單元格的值顯示爲空。

任何道理?

感謝

+0

哪條線拋出異常? – SLaks 2010-01-24 20:06:58

+0

此代碼中的第六行。 – 2010-01-24 20:08:56

+0

什麼是'wantedCell'? – SLaks 2010-01-24 20:09:57

回答

4

試試這個:

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

這並沒有爲我工作(拋出了一個異常轉換成一個布爾)。

我相信這樣做的工作:

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

更換排6 if (row.Cells[wantedCell].Value == DBNull.Value ? false : (bool)row.Cells[wantedCell].Value == true),使這個:

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]); 
     } 
    } 
} 
相關問題