天天看點

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合并行代碼