代码改变世界

给dataset动态添加一聚合结果行

2012-01-31 11:29  不知者  阅读(655)  评论(0编辑  收藏  举报

公司后台有一个统计每日各指标数据变化的功能,是同事写的,我想加一个汇总数据的变化行,因为数据处理稍微复杂了些,他说不好弄,就暂时没搞。

但是我每天登陆后都看这个,要点好几次鼠标才能看到汇总实在太不方便,于是还是忍不住亲自添加了一些代码。

其实很简单,就把dataset在绑定控件之前加入一行就行了。

           #region 对dataset进行处理:通过聚合得到一个汇总行并插入到第一行
DataRow dr = ds.Tables[0].NewRow();
dr["UserID"] = "0";
dr["1"] = ds.Tables[0].Compute("sum([1])", "true");
dr["2"] = ds.Tables[0].Compute("sum([2])", "true");
dr["3"] = ds.Tables[0].Compute("sum([3])", "true");
dr["4"] = ds.Tables[0].Compute("sum([4])", "true");
dr["5"] = ds.Tables[0].Compute("sum([5])", "true");
dr["6"] = ds.Tables[0].Compute("sum([6])", "true");
dr["7"] = ds.Tables[0].Compute("sum([7])", "true");
ds.Tables[0].Rows.InsertAt(dr, 0);
#endregion

ds是dataset,我这些代码插入到ds赋值之后绑定之前,不影响其它任何代码。

其中sum里的1 2 3 4都是dataset的字段名,同事创建的字段名为了方便竟然用数字,还好没多大影响。只是compute里的聚会字段名不能用数字开头,我加了方括号后正常运行。

最后把这行插入到datatable的第一列,因为有分页,所以我没用add,那样会加到最后一行。