输入字符串格式不正确
问题描述:
我想在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
为后者的目的。
答
迭代时检查GridViewRow的RowType。这可能是因为你试图从HeaderRow中解析值。我认为你只对DataRows感兴趣。
此外,您可能需要考虑不使用单元格上的索引从gridview中获取值。如果你改变gridview的布局,你的计算将失败。
答
您无法通过转换将空值转换为有意义的值。你最好的选择是首先检查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();
}
你应该总是试图尽可能地转换为另一种数据类型之前测试值。
你试图转换什么样的值?你有个例子吗? – Derek 2013-02-26 08:49:38
您是否调试过该行?所有单元格值都可以转换为int? – 2013-02-26 08:50:12
为每个循环添加一个中断点,调试循环的时间比在这里输入问题花费的时间少得多,并且您也可以得到答案。 :) – 2013-02-26 09:07:53