无法从DB Null或其他类型转换对象

时间:2014-04-20 07:23:20

标签: c# winforms datagridview

我的Windows应用程序中有一个datagridview。我想在其中使用datagridview单元格(从数量,价格,税,折扣)计算总金额并显示在总gridview单元格中。 但我得到这个错误。我也采取了可空类型。如何克服这个问题。     ?     这是我的cellendedit事件代码

 private void datagrid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            int val1 = Convert.ToInt32(datagrid.Rows[e.RowIndex].Cells[2].Value);
            int val2 = Convert.ToInt32(datagrid.Rows[e.RowIndex].Cells[3].Value);
            int val3 = Convert.ToInt32(datagrid.Rows[e.RowIndex].Cells[4].Value);
            int val4 = Convert.ToInt32(datagrid.Rows[e.RowIndex].Cells[5].Value);

                datagrid.Rows[e.RowIndex].Cells[6].Value = ((val2 + val3) * val1) - val4;

        } 

2 个答案:

答案 0 :(得分:0)

如果您的某个单元格为DBNull.Value,则会出现此问题。通常我会检查一个单元格是否不等于DBNull.Value,然后将其转换为in。如果你的值实际上是一个真正的null,那么我也假设将你的值设置为0就可以了。

int value1 = datagrid.Rows[e.RowIndex].Cells[2].Value == DBNull.Value ? 0 : Convert.ToInt32(datagrid.Rows[e.RowIndex].Cells[2].Value);

答案 1 :(得分:-1)

使用int.TryParse方法代替Convert.ToInt