对指定的DataTable列进行求和统计

本文介绍了一种在 DataGrid 中实现数据汇总的方法,并通过去除值为零的列来优化展示效果。具体步骤包括获取 DataTable 数据、计算各列的总和、添加汇总行到 DataTable 并更新 DataGrid 的数据源。
 

DataTable dt=GetData();
   DataRow dr = dt.NewRow();
   decimal de = 0;
   int iCount = 1;

   for(int i = iCount; i < dt.Columns.Count; i++)
   {
    ///需要对特殊字符进行转义,这里简略写,只对圆括号替换,其他遇到再说
    if(dt.Columns[i].ColumnName.IndexOf(")") > -1)
     dt.Columns[i].ColumnName = dt.Columns[i].ColumnName.Replace("(", "(").Replace(")", ")");

    de = dt.Compute("SUM([" + dt.Columns[i].ColumnName + "])", " 1 = 1 ") == System.DBNull.Value ? 0 :
     (decimal)dt.Compute("SUM([" + dt.Columns[i].ColumnName + "])", " 1 = 1 ");
    dr[i] = de;
   }
   dt.Rows.Add(dr);

   DataRow row = dt.Rows[dt.Rows.Count - 1];
   for(int i = dt.Columns.Count - 1; i > iCount ; i--)
   {
    if((decimal)(row[i]) == 0)
    {
     dt.Columns.Remove(dt.Columns[i]);
    }
   }
   dt.AcceptChanges();

   this.DataGrid1.DataSource = GetData();
   this.DataGrid1.DataBind();
   this.DataGrid1.Items[this.DataGrid1.Items.Count - 1].CssClass = "GridPage";
   this.DataGrid1.Items[this.DataGrid1.Items.Count - 1].Cells[0].Controls.Clear(); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值