0

我正在尝试在 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 单元格已经具有值。我只是添加(求和)这些值,并通过单击按钮在同一网格视图的另一个单元格中显示添加内容。

任何帮助表示赞赏。

4

4 回答 4

5

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

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

您可能对int.TryParse后一个目的感兴趣。

于 2013-02-26T08:48:45.753 回答
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();
        }

在可能的情况下尝试转换为另一种数据类型之前,您应该始终测试值。

于 2013-02-26T08:57:53.250 回答
0

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

于 2013-02-26T08:55:05.890 回答
0

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

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

于 2013-02-26T08:52:16.270 回答