foreach循环DataRow,先设置个初始值float sumNum = 0,循环一条插入另外一个表里(这里是为了防止DataRow条数变化后DataRow循环容易出错),每次循环的DataRow["B"]值上一条比较(第一次循环与初始值0比较),相等的话累加sumNum,不等的话多加一条DataRow["A"](s,t,n,p)+"小计"和对应的sumNum值,循环完了把新产生的表用DataView排序,再用DataGrid绑定就行了。

解决方案 »

  1.   

    这个好办了,只要你知道s,t,n什么的都有什么,然后用sql语句查询出来,逐行写入datagrid,在每一个写完的地方插入一个合计就行了,如果不清楚s,t,n这些可就麻烦了。
      

  2.   

    如果s,t,n什么的都不清楚,就只能循环读了,全部查询到一个dataset中,然后循环每一条记录,如果相同就加,不同就算合计。
      

  3.   

    DataTable myDataTable = new DataTable(); 
    myDataTable.Columns.Add(new DataColumn("A", typeof(string))); 
    myDataTable.Columns.Add(new DataColumn("B", typeof(int))); 
    myDataTable.Rows.Add(new object[] {"s", 1}); 
    myDataTable.Rows.Add(new object[] {"s", 2}); 
    myDataTable.Rows.Add(new object[] {"s", 3}); 
    myDataTable.Rows.Add(new object[] {"s", 4}); 
    myDataTable.Rows.Add(new object[] {"t", 1}); 
    myDataTable.Rows.Add(new object[] {"t", 2}); 
    myDataTable.Rows.Add(new object[] {"t", 3}); 
    myDataTable.Rows.Add(new object[] {"o", 1}); 
    myDataTable.Rows.Add(new object[] {"o", 2}); 
    myDataTable.Rows.Add(new object[] {"o", 3}); 
    myDataTable.Rows.Add(new object[] {"o", 4}); 
    myDataTable.Rows.Add(new object[] {"o", 5}); DataTable newDataTable = new DataTable(); 
    newDataTable.Columns.Add(new DataColumn("A", typeof(string))); 
    newDataTable.Columns.Add(new DataColumn("B", typeof(int))); int sumNum = 0; 
    string colAValue = ""; 
    foreach(DataRow myDataRow in myDataTable.Rows) 

    if(colAValue == "" || colAValue == myDataRow[0].ToString() ) 

    newDataTable.Rows.Add(new object[] {myDataRow[0].ToString(), myDataRow[1]}); 
    sumNum += System.Convert.ToInt32(myDataRow[1]); 
    colAValue = myDataRow[0].ToString(); 

    else 

    newDataTable.Rows.Add(new object[] {colAValue+"小计", sumNum}); 
    newDataTable.Rows.Add(new object[] {myDataRow[0].ToString(), myDataRow[1]}); 
    sumNum = System.Convert.ToInt32(myDataRow[1]); ; 
    colAValue = myDataRow[0].ToString(); 


    newDataTable.Rows.Add(new object[] {colAValue+"小计", sumNum}); this.dataGrid1.DataSource = newDataTable;上面代码我试过,可以的,前提是你的Table已经按要求排序好了。就是你列出得那种排序规则。
      

  4.   

    没问题,用sql,select a,sum(b) from table group by a with rollup
      

  5.   

    抱歉,写错了,应该是:select a,b from table order by a compute sum(b) by a