给你个建议,你这样做风险比较大,你可以在数据表里做点处理,而不是在GridView上做。
例如查询的时候先查询数据,然后再查询合计(用sum函数),然后把两个结果集union一下,当作查询结果集输出。这是一种方法,比较推荐
另外一种可以在得到DataTable之后遍历每一行,把合计的数算出来,再给DataTable加一行新的,然后绑在GridView上就可以了。用不着再Footer上显示,而且Footer有的时候可能还有其他的用处。
你这个错误报的是数据类型转换出错,字符串无法转换成double,这些都是不可预知因素了
if (isFirstBind)
{
for (int i = 0; i < table.Rows.Count; i++)
{
mysum1 += Convert.ToInt32(table.Rows[i][3].ToString());
mysum2 += Convert.ToInt32(table.Rows[i][4].ToString());
}
isFirstBind = false;
}
// 合计
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[1].Text = "合计";
e.Row.Cells[9].Text = mysum1.ToString();
e.Row.Cells[10].Text = mysum2.ToString();
}
这样OK了
是的不能那么转化,如果是字符串,或者空,你转化要报错
你要
定义个double类型的a 并且给默认值 0
double.TryParse("要转化的值",out a)
sum+= a
那显然你e.Row.Cells[2].Text里面的东西不是double 看看是不是索引错了 应该是1 ??
或者你e.Row.Cells[2].Text里面是空的 你要加判断啊 至少要有Try把转换包起来
在原数据上做,比较容易。
处理好了,再和GridView绑定。