2010-01-24 45 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]); 
     } 
    } 
} 
相关问题