我正在尝试在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的另一个单元格中显示添加。
任何帮助表示赞赏。
答案 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(或其他)(转换也发送其结果的地方)。