Get DataGridView checkbox cell value?
I'm having a strange issue here.
I have a 3 column datagrid that is filled by a connection with the database. So far so good.
I have an extra column, of checkbox type. I need to get it's value for perfoming a bulk operation on it. Here is the catch:
When all cells are selected, it works fine. But when an user selects any cell that its not开发者_如何学Go the first, software gives me a object reference exception.
Here is the code
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 tracked down the failure to the if-test, throwing a exception, because the value of the cell is read as null.
Any thougths?
Thanks
try this:
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]);
}
}
}
This didn't work for me (an exception was thrown converting to a Boolean).
I believe that this does the job:
foreach (DataGridViewRow row in dgv.SelectedRows)
{
bool b = row.Cells[0].Value == DBNull.Value ? false : (bool)row.Cells[0].Value;
...
}
Replace row 6 with if (row.Cells[wantedCell].Value == DBNull.Value ? false : (bool)row.Cells[wantedCell].Value == true)
to make this:
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]);
}
}
}
Default value on "unchecked" checkboxcell in datagridview is DBNull. You can change this at its column by setting CheckBoxColumn FalseValue attribute:
DataGridViewCheckBoxColumn CheckCol = new DataGridViewCheckBoxColumn();
CheckCol.FalseValue = false;
This will resolve your issue with the cell being read as null.
精彩评论