天天看点

GridView合并行代码

图:

GridView合并行代码
GridView合并行代码
GridView合并行代码

Code

GridView合并行代码
GridView合并行代码

    protected void Page_Load(object sender, EventArgs e)

GridView合并行代码
GridView合并行代码
GridView合并行代码

{

GridView合并行代码

        if (!IsPostBack)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

            DataTable oDataSource = CreateTable();

GridView合并行代码

            DataView oDV = oDataSource.DefaultView;

GridView合并行代码

            oDV.Sort = "StudentNo";

GridView合并行代码

            GvStudent.DataSource = oDV;

GridView合并行代码

            GvStudent.DataBind();

GridView合并行代码

        }

GridView合并行代码

    }

GridView合并行代码

    private DataTable CreateTable()

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

        DataTable oDT = new DataTable();

GridView合并行代码

        oDT.Columns.Add("StudentNo");

GridView合并行代码

        oDT.Columns[0].DataType = typeof(System.Int32);

GridView合并行代码

        DataColumn oDC = new DataColumn("StudentName", typeof(System.String));

GridView合并行代码

        oDT.Columns.Add(oDC);

GridView合并行代码

        oDT.Columns.Add("Do1");

GridView合并行代码

        oDT.Columns.Add("Do2");

GridView合并行代码
GridView合并行代码

        DataRow oDR = oDT.NewRow();

GridView合并行代码

        oDR[0] = 1001;

GridView合并行代码

        oDR["StudentName"] = "小张";

GridView合并行代码

        oDR["Do1"] = "学国学";

GridView合并行代码

        oDR["Do2"] = "学英语";

GridView合并行代码

        oDT.Rows.Add(oDR);

GridView合并行代码
GridView合并行代码

        DataRow oDR1 = oDT.NewRow();

GridView合并行代码

        oDR1["StudentNo"] = 1004;

GridView合并行代码

        oDR1[1] = "小李";

GridView合并行代码

        oDR1[2] = "闲着";

GridView合并行代码

        oDR1[3] = "继续闲着";

GridView合并行代码

        oDT.Rows.Add(oDR1);

GridView合并行代码
GridView合并行代码

        DataRow oDR2 = oDT.NewRow();

GridView合并行代码

        oDR2[0] = 1001;

GridView合并行代码

        oDR2["StudentName"] = "小张";

GridView合并行代码

        oDR2["Do1"] = "学英语";

GridView合并行代码

        oDR2["Do2"] = "学法语";

GridView合并行代码

        oDT.Rows.Add(oDR2);

GridView合并行代码
GridView合并行代码

        return oDT;

GridView合并行代码
GridView合并行代码
GridView合并行代码

    int iPreStudentNo, iCurrentStudentNo;

GridView合并行代码

    int iPreRowNum;

GridView合并行代码

    int iMergeBegin = 2, iMergeEnd = 3;

GridView合并行代码

    protected void GvStudent_RowDataBound(object sender, GridViewRowEventArgs e)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

        if (e.Row.RowType == DataControlRowType.DataRow)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

            DataRowView drv = e.Row.DataItem as DataRowView;

GridView合并行代码

            GridViewRow oRow=e.Row;

GridView合并行代码

            int.TryParse(drv["StudentNo"].ToString(), out iCurrentStudentNo);

GridView合并行代码
GridView合并行代码

            if (oRow.RowIndex > 0)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

                //第二条记录才进行是否合并

GridView合并行代码

                if (iCurrentStudentNo != iPreStudentNo)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

                    if (oRow.RowIndex - iPreRowNum > 1)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

                        AddRowSpanForColumns(GvStudent.Rows[iPreRowNum], iMergeBegin, iMergeEnd, oRow.RowIndex - iPreRowNum);

GridView合并行代码

                    }

GridView合并行代码

                    iPreStudentNo = iCurrentStudentNo;

GridView合并行代码

                    iPreRowNum = oRow.RowIndex;

GridView合并行代码

                }

GridView合并行代码

                else

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

                    RemoveColumnsFromRow(oRow, iMergeBegin, iMergeEnd);

GridView合并行代码
GridView合并行代码

            }

GridView合并行代码

            else

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

                //第一条记录

GridView合并行代码

                iPreStudentNo = iCurrentStudentNo;

GridView合并行代码

                iPreRowNum = oRow.RowIndex;

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

    Combination Columns#region Combination Columns

GridView合并行代码

    private void AddRowSpanForColumns(GridViewRow oRow, int iIndexOfColumnBegin, int iIndexOfColumnEnd, int iRowspan)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

        //给上一个相同的加上Span 

GridView合并行代码

        for (int i = 0; i < oRow.Cells.Count; i++)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

            if (i < iIndexOfColumnBegin || i > iIndexOfColumnEnd)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

                oRow.Cells[i].RowSpan = iRowspan;

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

    /**//// <summary>

GridView合并行代码

    /// 移除列,进行合并

GridView合并行代码

    /// </summary>

GridView合并行代码

    /// <param name="oRow"></param>

GridView合并行代码

    /// <param name="iIndexOfColumnBegin"></param>

GridView合并行代码

    /// <param name="iIndexOfColumnEnd"></param>

GridView合并行代码

    private void RemoveColumnsFromRow(TableRow oRow, int iIndexOfColumnBegin, int iIndexOfColumnEnd)

GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码
GridView合并行代码

                oRow.Cells.RemoveAt(i);

GridView合并行代码

                i--;

GridView合并行代码

                iIndexOfColumnBegin--;

GridView合并行代码

                iIndexOfColumnEnd--;

GridView合并行代码
GridView合并行代码
GridView合并行代码