在GRIDVIEW中合并单元格

///   <summary>  
    ///   合并GridView列中相同的行  
    ///   </summary>  
    ///   <param   name="GridView1">GridView对象</param>  
    ///   <param   name="cellNum">需要合并的列</param>  
    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;
                }
            }
        }
    }

    ///   <summary>  
    ///   根据条件列合并GridView列中相同的行  
    ///   </summary>  
    ///   <param   name="GridView1">GridView对象</param>  
    ///   <param   name="cellNum">需要合并的列</param>
    ///   ///   <param   name="cellNum2">条件列(根据某条件列还合并)</param>
    public static void GroupRows(GridView GridView1, int cellNum, int cellNum2)
    {
        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 + gvr.Cells[cellNum2].Text == gvrNext.Cells[cellNum].Text + gvrNext.Cells[cellNum2].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;
                }
            }
        }
    }

第二个方法只是在第一个方法的修改了一点点, 在判断单元格的时候,加上了一个条件列:

if (gvr.Cells[cellNum].Text + gvr.Cells[cellNum2].Text == gvrNext.Cells[cellNum].Text + gvrNext.Cells[cellNum2].Text)。当然,第二个方法还可以扩展,根据多个列的条件来合并。
本文地址:http://www.watch-life.net/aspnet/gridview-merger-cell.html



微信扫描下方的二维码阅读本文

那年今日

2009-12-18 至少要平静 (8 个评论)

2008-12-18 奶爸的周末日程 (4 个评论)

2008-12-18 Visual Studio 2008 每日提示(十一) (0 个评论)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注