你可以把得出来的datatable,进行处理,然后重新绑定。

解决方案 »

  1.   

    dataGrid中列出的数据后,將datetable進行分組處理,
    得到數據後綁定
      

  2.   

    在绑定之前进行处理,想选择需要的行用DataView的RowFilter属性
    例:
    public DataView getCommonRec()              {                     try                     {                            DataView dv=new DataView();                            dv=_dsAll.Tables[0].DefaultView;                            dv.RowFilter="RAYSTATUS4UPK='110' and (RAYSTATUS<>'100' and RAYSTATUS<>'200')";                                               return dv;                     }                     catch(Exception err)                     {                                                        throw err;                     }              }对取得的数据源过滤
      

  3.   

    假设dataGrid数据如下:
    a例        b例        C例        D例
    a          b          c          20
    a          b          d          40
    a          c          c          20
     
    得到如下的dataGrid
    a例        b例        C例        D例
    a          b          c          20
    a          b         C小计       20
    a          b          d          40
    a          b         d小计       40
    a          b小计                 60
    a          c          c          20
    a          c          c小计      20  //可以没有此行
    a          c小计                 20
    a小计                            80
      

  4.   

    小计的行必须放在中间吗?放在最后的话可以用Rows.Add()方法
    将你小计的内容放进去
      

  5.   

    还是将数据放入datatable中单独处理,再绑定
      

  6.   

    假设dataGrid1的数据源为dt1,DataView dv1,dt1中的数据是排序好了的。
    dataGrid1.DataSource = dv1;
    1、建DataTable dt2,2列(需要分组的列数-1)
    2、string c1="",c2=""
    3、循环dt1,c1为a列,c2为a列+b列,
    如果当前行的a列!=c1,存入dt2;a列+b列!=c2,存入dt2
    得到dt2中就为
    1: a null
    2: a b 
    3: a c
    4、需要插入的小计行数目就是dt1.Rows.Count+dt2.Rows.Count
    5、循环dt1,插入c列小计的小计行
    6、循环dt2,插入a列小计和b列小计的小计行
       插入小计行的计算就是,例如计算a列="a",b列="b"的小计
    dt1.Compute("Sum(D列)","a列=a and b列=b");
    8、最后dv1.Sort = "a列,b列,c列";
    思路就是这样的了,我就做了1列分组的,多列嫌麻烦:)
    注意:
    你插入的小计处于中间是排序后的结果,实际是在dt1的最后的;
    插入的行太多(几百条好像没问题),速度有点慢。
      

  7.   

    我的如下想法是否可行:
    对给定的SQL语句生成一个临时表,再对临时表1进行处理;
    1. 临时表1中的数据放入临时表2,需要把分组列均改为字符类型
    2. 处理分组数据所有列的分组,所有分组列均改为字符类型,最后分组列中的值为列值加“小计”,插入到临时表中,
    3. 再把分组列最后的分组列去掉,再对其进行分组,现在的所有分组列均改为字符类型,现在分组列的最后一列的值为列值加“小计”,去掉分组列的值为“最大的字符串”;
    4. 重复第2步,直到把所有分组列处理完
    5. 显示时直接从临时表2中取数,需要把“最在的字符串”改为空串(“”),对所有分组列进行按升序排序列出。