把小计插入到datatable里,然后绑定datatable到RDLC插入代码如下:(代码没测试,随手写的,你参考下)
string name="";
int total=0;
int i=0;
foreach(DataRow dr in dataTable1.Rows)
{
    total += (int)dr["total"];
    if(dr["name"].ToString()!=name)
   {
       if(i>0)
      {
          DataRow drNew = dataTable1.NewRow();
         drNew["name"]="小计";
         drNew["total"]=total;
         dataTable1.Rows.Insert(i,drNew);
      }
       total=0;
      name=dr["name"].ToString();
   }
   i++;
}    if(i>0)
      {
          DataRow drNew = dataTable1.NewRow();
         drNew["name"]="小计";
         drNew["total"]=total;
         dataTable1.Rows.Insert(i,drNew);
      }

解决方案 »

  1.   

    最后还有个总的合计吧,可以再加个alltotal变量,循环里一直加dr["total"],再在最后插入一条合计记录
      

  2.   

    提示错误:不包含“insert”的定义
      

  3.   

    恩,改成这样ds.Tables[0].Rows.InsertAt(drNew,i)就对了,但是又出现错误:total += (int)dr["total"];显示这行指定的转换无效。什么原因
      

  4.   

    total += (int)dr["total"]  这个转换错在哪里
      

  5.   

    这里显示错误:
    foreach(DataRow dr in dataTable1.Rows)     集合已修改;枚举操作可能无法执行
      

  6.   

    total += (int)dr["total"]  这个转换错在哪里 
    ============================
    是因为你数据库total字段类型不是integer类型
    你试试下面这个代码看看string name="";
    int total=0;for(int i=0;i< dataTable1.Rows.count;i++)
    {
       DataRow dr=dataTable1.Rows[i];
        total += int.Parse(dr["total"].ToString());
        if(dr["name"].ToString()!=name)
       {
           if(i>0)
          {
              DataRow drNew = dataTable1.NewRow();
             drNew["name"]="小计";
             drNew["total"]=total;
             dataTable1.Rows.InsertAt(drNew,i);
             i++;
          }
           total=0;
          name=dr["name"].ToString();
       }
       i++;
    }    if(i>0)
          {
              DataRow drNew = dataTable1.NewRow();
             drNew["name"]="小计";
             drNew["total"]=total;
             dataTable1.Rows.Insert(i,drNew);
          }