急需要将datatable增加一行,内容为每一列的和,如何实现
如题 问题点数:100、回复次数:12Top
1 楼Tom_Real()回复于 2006-03-21 14:01:44 得分 48
1、DataRow dr = datatable.NewRow();
2、循环加,或用datatable.Compute方法,附值到dr对应列。
3、datatable.Rows.Add(dr);Top
2 楼pwqzc(吴旗娃徒也~~老鼠粮仓之路)回复于 2006-03-21 14:12:59 得分 2
楼上的对Top
3 楼pyuan(菜鸟)回复于 2006-03-21 14:18:10 得分 20
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
int sum;
for (int j = 0; j < dt.Columns.Count; j++)
{
sum = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
sum += Convert.ToInt32(dt.Rows[i][j]);
}
dr[j] = sum;
}
dt.Rows.Add(dr);Top
4 楼lvw8000(lvw)回复于 2006-03-21 14:27:55 得分 0
谢谢,可以给出具体的代码吗?Top
5 楼Tom_Real()回复于 2006-03-21 14:29:40 得分 0
还可以用sql解决,不过可能需要比较一下哪种方法效率更高:
select zd1,zd2,zd3,zd4 from tablename
union
select sum(zd1),sum(zd2),sum(zd3),sum(zd4) from tablename
另外,如果语句过长,可能会报错Top
6 楼net_lover(【孟子E章】)回复于 2006-03-21 14:32:01 得分 30
如果是显示,可以
http://dotnet.aspx.cc/ShowDetail.aspx?id=175C1EA1-A261-45D3-B5AC-94F6CACCDDEFTop
7 楼Tom_Real()回复于 2006-03-21 14:35:33 得分 0
循环的代码pyuan(菜鸟) 已经写出来了,可能转换时需要判断一下dt.Rows[i][j]是否为空;
Compute方法也很简单:
DataTable dt=....;
DataRow dr = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
dr[j] = dt.Compute("sum("+dt.Columns[j].ColumnName+")");
}
dt.Rows.Add(dr);
大概就是这样,自己研究一下。
我的.NET环境出问题了,郁闷!!Top
8 楼lvw8000(lvw)回复于 2006-03-21 14:36:13 得分 0
非常感谢大家支持,我这是一个灵活的记录集,我想把DataTable写入临时表中,再在临时表中做sum和其它的操作,这样做有没有什么问题???Top
9 楼Tom_Real()回复于 2006-03-21 14:51:58 得分 0
没问题,如果在计算后还有操作,例如加行、删除行,建议把总计行插入到dt的第一行,便于操作:
//dt.Rows.Add(dr);
dt.Rows.InsertAt(0,dr);
另外,注意保存临时表Top
10 楼lvw8000(lvw)回复于 2006-03-21 15:13:49 得分 0
DataRow dr = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
dr[j] = dt.Compute("sum("+dt.Columns[j].ColumnName+")");
}
dt.Rows.Add(dr);
运行时出错,提示:C:\Inetpub\wwwroot\wilcomReport\Report\ReportSearchControl.ascx.cs(293): 不能在此范围内声明名为“dr”的局部变量,因为这样会使“dr”具有不同的含义,而它已经用于“子级”范围以表示其他内容
请问应该怎么定义,初学.net,向大家请教,谢谢
Top
11 楼Tom_Real()回复于 2006-03-21 15:21:35 得分 0
你一定在外面已经定义了一个dr了,如果是常用的变量,象i,dr,dt等一般就定义在方法开始就可以了,如果是不常用的,定义后加个注释,以后修改比较方便Top
12 楼lvw8000(lvw)回复于 2006-03-21 16:07:38 得分 0
谢谢大家,搞定,结贴了Top




