我使用以下代码从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)
由于
答案 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)