C# 输入字符串的格式不正确

C# 输入字符串的格式不正确,c#,asp.net,datagridview,C#,Asp.net,Datagridview,我试图在gridview中添加int值。这是我的C代码: 异常:“输入字符串的格式不正确” 早些时候它运转良好。我切换到另一个系统,连接了数据库,在这里和那里做了一些更改,现在它不工作了。加载页面时,gridview单元格已具有值。我只是添加(求和)这些值,然后单击按钮,在同一gridview的另一个单元格中显示添加值 谢谢你的帮助 检查传入每个Convert.ToInt32调用的值,其中一个或多个调用不能转换为int 您可以通过直接查看数据库管理器中的源代码来实现这一点,或者单步执行代码并查看

我试图在gridview中添加int值。这是我的C代码:

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

早些时候它运转良好。我切换到另一个系统,连接了数据库,在这里和那里做了一些更改,现在它不工作了。加载页面时,gridview单元格已具有值。我只是添加(求和)这些值,然后单击按钮,在同一gridview的另一个单元格中显示添加值


谢谢你的帮助

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

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


出于后一个目的,您可能会感兴趣。

在迭代时检查GridViewRow的行类型。可能是您正试图解析HeaderRow中的值。我想你只对数据行感兴趣


也可以考虑使用格子上的索引从GRIDVIEW中获取值。如果更改gridview的布局,计算将失败。

您无法通过convert将空值转换为有意义的值。最好的选择是先检查null,然后为结果指定一个0(或任何值)(无论Convert在哪里也发送其结果)。

尝试以下方法:

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

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

您尝试转换的是哪种类型的值?你有一个例子吗?你调试过那一行吗?所有单元格值都可以转换为int?为每个循环在处添加断点并调试循环比在此处键入问题花费的时间要少得多,您也可以得到答案。:)我做了调试。它接受所有空值(“”)。当gridview已经显示页面加载上的值时,这怎么可能呢?在我的数据库中,我将所有这些值的数据类型都作为float。但是,在输入值时,我输入了整数。现在,gridview在加载页面时显示值(整数)。但是,当我单击按钮时,它会发送所有空值…实际上没有看到数据,我无法真正给您答案,除非一定有一些奇怪的数据不想玩得很好。数据是整数值(数据库中的数据类型为float)。。。thnx虽然当您拥有的数据无法转换为int。正如您所说,数据存储为float,那么我只能假设您拥有包含点的值,即3.5-这不会转换为int,您需要先将其向上或向下舍入。或者将代码更改为使用float.TrParse()处理浮点数,然后对浮点数求和。只有数据类型是float。包含(插入)的值是整数。此外,我还尝试使用float类型变量和Convert.ToFloat()。。。看起来C#不支持Convert.ToFloat()。它支持Convert.ToDouble()通过。。。我真的不知道如何使用float.tryparse()…如果只存储整数,就不能更改列的数据类型吗?它必须是浮动的吗?您使用的float.TryParse()与我在示例中使用的int.TryParse()相同,只是val1-5将是float。我将行类型设置为数据行。。。foreach(){if(r.RowType==DataControlRowType.DataRow){//my code}}它仍然不工作。。我想这里真的需要一些帮助。。。
        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();
        }