繁体   English   中英

输入的字符串格式不正确

[英]Input string was not in a correct format

我正在尝试在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的另一个单元格中显示加法。

任何帮助表示赞赏。

检查传递给每个Convert.ToInt32调用的值,其中一个或多个不能转换为int

您可以通过直接在数据库管理器中查看源代码,或单步执行代码并查看行的列和值等来执行此操作。但是,您所做的修复仍保持不变,并采用两种形式中的一种或两种:数据,或修改代码以免被忽略(如果可以接受)。

您可能对int.TryParse感兴趣,用于后者。

尝试这个:

        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();
        }

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

迭代时检查GridViewRow的RowType。 可能是您试图从HeaderRow解析值。 我认为您只对DataRows感兴趣。

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

您不能通过“转换”将空值转换为有意义的值。 最好的选择是先检查null,然后为结果赋值0(或其他值)(无论Convert也在发送结果的位置)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM