首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

gridview合并相同信息行的有关问题

2012-09-27 
gridview合并相同信息行的问题我想将所有的列中行与行间含有相同的信息就合并成一行,下面的代码i表示要循

gridview合并相同信息行的问题
我想将所有的列中行与行间含有相同的信息就合并成一行,下面的代码i表示要循环的列数,奇怪的是当for (int i = 0; i < 1; i++)第一列还能够合并,可是当我改成for (int i = 0; i < 2; i++),所有的列都不会合并了,也就是一点改变都没有,请大家帮帮我吧,我的代码如下:

C# code
//单元格要合并的行数    public int intRowSpan = 1;    //开始合并的索引值    public int intIndex = 0;    //记录第一列相等的条件    private string strText = "";    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)    {        for (int i = 0; i < 1; i++)        {                        if (e.Row.RowIndex == 0)            {                strText = e.Row.Cells[i].Text;            }            if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex != 0)            {                if (e.Row.Cells[i].Text == strText)                {                    intRowSpan++;                    GridView1.Rows[intIndex].Cells[i].RowSpan = intRowSpan;                    e.Row.Cells[i].Visible = false;                                    }                else                {                    intRowSpan = 1;                    intIndex = e.Row.RowIndex;                                    }                strText = e.Row.Cells[i].Text;            }            this.Label1.Text = intRowSpan.ToString();                    }                    }


[解决办法]
C# code
/// <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;                    }                }            }        } 

热点排行