输入字符串的格式不正确。解决思路

输入字符串的格式不正确。
输入字符串的格式不正确。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 166:        float sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0, sum5 = 0, sum6 = 0, sum7 = 0;
行 167:        for (int j = 0; j < tempdt.Rows.Count; j++) {
行 168:            sum1 += float.Parse(tempdt.Rows[j]["本科教学与人才培养"].ToString());
行 169:            sum2 += float.Parse(tempdt.Rows[j]["国际交流与合作"].ToString());
行 170:            sum3 += float.Parse(tempdt.Rows[j]["研究生教学与人才培养"].ToString());

源文件: e:\KPISystem\KPISystem1103_02\User\Default.aspx.cs    行: 168 

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt) +398
   System.Single.Parse(String s) +23
   User_Default.bindFirstIndicatorGridView() in e:\KPISystem\KPISystem1103_02\User\Default.aspx.cs:168
   User_Default.Page_Load(Object sender, EventArgs e) in e:\KPISystem\KPISystem1103_02\User\Default.aspx.cs:29
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +92
   System.Web.UI.Control.LoadRecursive() +54
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

------解决方案--------------------
错误在这里:
User_Default.bindFirstIndicatorGridView() in e:\KPISystem\KPISystem1103_02\User\Default.aspx.cs:168
   User_Default.Page_Load(Object sender, EventArgs e) in e:\KPISystem\KPISystem1103_02\User\Default.aspx.cs:29
上面已经给行号了,按行号去查排除错误.

还有想问下为什么字段用中文呢?这不是自找麻烦吗

------解决方案--------------------
数据库中你这个字段中的内容有null值,转换当然报错了

做下转换如下:

   sum1 += float.Parse(string.IsNullOrEmpty(tempdt.Rows[j]["本科教学与人才培养"].ToString())?"0":tempdt.Rows[j]["本科教学与人才培养"].ToString());