绑定到GricView的数据是如下:希望按照“列1”进行分组合计,并加一列,显示分组合计后的合计数,结果如下,请问怎么实现呢?请大家帮帮忙啊!谢谢!

解决方案 »

  1.   

     public static void GroupRows(GridView GridView1, int cellNum)
        {
            int i = 0, rowSpanNum = 1;
            while (i < GridView1.Rows.Count - 1)
            {
                GridViewRow gvr = GridView1.Rows[i];
                for (++i; i < GridView1.Rows.Count; i++)
                {
                    GridViewRow gvrNext = GridView1.Rows[i];
                    if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                    {
                        gvrNext.Cells[cellNum].Visible = false;
                        rowSpanNum++;
                    }
                    else
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                        rowSpanNum = 1;
                        break;
                    } 
                    if (i == GridView1.Rows.Count - 1)
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                    }
                }
            }
        } 
      

  2.   

    思路尽量不要在GridView里操作数据用SQL效率高很多
    select b.id,b.列1,b.列2,b.列3,(select count(1) from tb_MyTable a where a.列1=b.列1) as 合计 from tb_mytable b Order by b.列1这样生成的表格跟你的要求基本相同了,只是合计一列还有点问题这个可以在GridView里解决,首先按列1排列,把列1值相同的合计单元格合并,显示相应的合计数!
      

  3.   

    39364250--Asp.net(C#)高手交流群(高级群)!欢迎高手加盟!
      

  4.   

     Asp.Net中C#实现的DataGrid小计,合计和纵向合并的通用方法
    http://blog.csdn.net/sharpnessdotnet/archive/2008/01/14/2042853.aspx
      

  5.   

    //用一个列来控制指定列的合并情况。
            public static void SpanSingleRow(GridView gView, int GroupColumn, int Compare1)
            {
                int i = 0;
                int j = 0;
                int rowSpan;
                string strSource = "";
                string strTarget = "";            for (i = 0; i < gView.Rows.Count; i++)
                {
                    rowSpan = 1;
                    strSource = gView.Rows[i].Cells[Compare1].Text;                for (j = i + 1; j < gView.Rows.Count; j++)
                    {
                        strTarget = gView.Rows[j].Cells[Compare1].Text;                    if (strSource.Length > 0 && strSource != "&nbsp;" && string.Compare(strSource, strTarget) == 0)
                        {
                            rowSpan += 1;
                            gView.Rows[i].Cells[GroupColumn].RowSpan = rowSpan;
                            gView.Rows[j].Cells[GroupColumn].Visible = false;
                        }
                        else
                        {
                            break;
                        }
                    }
                    i = j - 1;
                }
            }PS:SpanSingleRow(gView,4,4);如果你想加一个,你最后一列的实现用SQL实现就可以了撒