C# - Datagridview中的System.InvalidCastException

时间:2015-05-06 09:23:00

标签: c#

我使用以下代码从datagridview中检索了一行(在datagridview cellclick事件中)

DataGridViewRow dtrow = gvUserFormStatus.Rows[e.RowIndex];

我尝试从datagridviewrow获取单元格值(第一个单元格)并使用下面的代码转换为double

double x = (double)(dtrow.Cells[0].Value);

我收到错误 发生了类型为“ System.InvalidCastException ”的未处理异常。

其他信息:指定演员无效

这里是编写gridview的代码

SqlDataAdapter mydataadapter = new SqlDataAdapter("select * from user_table", myconnection);
DataSet mydataset = new DataSet();
mydataadapter.Fill(mydataset);

DataTable dtUserFormStatus = mydataset.Tables[0];
gvUserFormStatus.DataSource = dtUserFormStatus;

在sql中,此特定字段的数据类型为 nvarchar(10)

由于

2 个答案:

答案 0 :(得分:1)

我通常更喜欢FormattedValue

double x = double.Parse(dtrow.Cells[0].FormattedValue.ToString());

替代

double x = double.Parse(dtrow.Cells[0].Value.ToString());

答案 1 :(得分:0)

Cells [0]中的DataGridViewCell对象将Value属性声明为Object。您正在使用()运算符将对象显式转换为double,无论值是什么,都会抛出异常。

这是你的情况:

  Object number = 123;
  double doubleNumber = (double)number; --> InvalidCastException

改为使用

Convert.ToDouble(Cells[0].Value)