2014-02-14 60 views
0

下面的代码给出了错误:指定的转换无效。将float数据类型列转换为双精度时出错

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataRow row = ((DataRowView)e.Row.DataItem).Row; 
      **double Yellow = Convert.ToDouble(row.Field<float?>("Yellow"));** 
     } 
    }  

下面的代码适用于我。但我无法在下面的代码

double Yellow = Convert.ToDouble(((DataRowView)e.Row.DataItem)["Yellow"]); 

请帮忙处理NULL值..

+0

什么是现场'Yellow'的类型,它可能是'双?' – Habib

+0

数据类型Yellow'的'是浮动 – Interstellar

+0

然后尝试'float',而不是'浮动?' – Habib

回答

0

尝试将它们分成多行以避免破坏得墨忒耳定律。它会使阅读更容易。

var dataRowView = e.Row.DataItem as DataRowView; 
DataRow row = dataRowView.Row; 
var result = (row["Yellow"] as double?) ?? 0.0; 
1

尝试使用

double? Yellow = ((DataRowView)e.Row.DataItem)["Yellow"] != null ? Convert.ToDouble(((DataRowView)e.Row.DataItem)["Yellow"]) : (double?)null; 
+0

我甚至无法编译这个。 **不能确定条件表达式的类型,因为'double'和''** – Interstellar

+0

之间没有隐式转换。我forgott投给null加倍。编辑 – melvas

+0

:(对象不能从DBNull转换到其他类型 – Interstellar

0

最后,我不得不使用System.DBNull.Value检查

if (((DataRowView)e.Row.DataItem)["Yellow"] != System.DBNull.Value) 
      { 
       double? Yellow = 
        (double?)Convert.ToDouble(((DataRowView)e.Row.DataItem)["Yellow"]); 
      } 
相关问题