输入字符串的格式不正确

时间:2013-02-26 08:46:40

标签: c# asp.net datagridview

我正在尝试在gridview中添加int值。继承我的C#代码:

foreach (GridViewRow r in GridView1.Rows) 
{
      int I = (Convert.ToInt32(r.Cells[5].Text) 
              + Convert.ToInt32(r.Cells[6].Text) 
              + Convert.ToInt32(r.Cells[7].Text) 
              + Convert.ToInt32(r.Cells[8].Text) 
              + Convert.ToInt32(r.Cells[9].Text));
      r.Cells[10].Text = Convert.ToString(I);
}
  

异常:“输入字符串的格式不正确”

之前工作正常。我切换到另一个系统,附加了数据库,在这里进行了一些更改。那里现在还没有用。加载页面时,gridview单元格已具有值。我只是添加(求和)这些值并在点击按钮时在同一gridview的另一个单元格中显示添加。

任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:5)

检查传入每个Convert.ToInt32来电的值,其中一个或多个不可转换为int

您可以直接查看数据库管理器中的源代码,或者单步执行代码并查看行列和值等等。但是,修复程序保持不变并采用两种形式中的一种或两种:修复数据,或者修改代码(如果可以接受的话)。

出于后一目的,您可能会对int.TryParse感兴趣。

答案 1 :(得分:2)

试试这个:

        foreach (GridViewRow r in GridView1.Rows)
        {
            int val1 = 0;
            int val2 = 0;
            int val3 = 0;
            int val4 = 0;
            int val5 = 0;

            int.TryParse(r.Cells[5].Text, out val1);
            int.TryParse(r.Cells[6].Text, out val1);
            int.TryParse(r.Cells[7].Text, out val1);
            int.TryParse(r.Cells[8].Text, out val1);
            int.TryParse(r.Cells[9].Text, out val1);

            int I = (val1 + val2 + val3 + val4 + val5);

            r.Cells[10].Text = I.ToString();
        }

在尝试转换为其他数据类型之前,您应该始终测试值。

答案 2 :(得分:0)

迭代时检查GridViewRow的RowType。可能是您正在尝试解析HeaderRow中的值。我想你只对DataRows感兴趣。

此外,您可能希望考虑不使用单元格上的索引从gridview获取值。如果更改gridview的布局,则计算将失败。

答案 3 :(得分:0)

您无法通过转换将空值转换为有意义的值。您最好的选择是首先检查null,然后为结果分配值0(或其他)(转换也发送其结果的地方)。