zoukankan      html  css  js  c++  java
  • GridView合并行代码

      

    图:

     



        
    protected void Page_Load(object sender, EventArgs e)
        
    {
            
    if (!IsPostBack)
            
    {
                DataTable oDataSource 
    = CreateTable();
                DataView oDV 
    = oDataSource.DefaultView;
                oDV.Sort 
    = "StudentNo";
                GvStudent.DataSource 
    = oDV;
                GvStudent.DataBind();
            }

        }

        
    private DataTable CreateTable()
        
    {
            DataTable oDT 
    = new DataTable();
            oDT.Columns.Add(
    "StudentNo");
            oDT.Columns[
    0].DataType = typeof(System.Int32);
            DataColumn oDC 
    = new DataColumn("StudentName"typeof(System.String));
            oDT.Columns.Add(oDC);
            oDT.Columns.Add(
    "Do1");
            oDT.Columns.Add(
    "Do2");

            DataRow oDR 
    = oDT.NewRow();
            oDR[
    0= 1001;
            oDR[
    "StudentName"= "小张";
            oDR[
    "Do1"= "学国学";
            oDR[
    "Do2"= "学英语";
            oDT.Rows.Add(oDR);

            DataRow oDR1 
    = oDT.NewRow();
            oDR1[
    "StudentNo"= 1004;
            oDR1[
    1= "小李";
            oDR1[
    2= "闲着";
            oDR1[
    3= "继续闲着";
            oDT.Rows.Add(oDR1);

            DataRow oDR2 
    = oDT.NewRow();
            oDR2[
    0= 1001;
            oDR2[
    "StudentName"= "小张";
            oDR2[
    "Do1"= "学英语";
            oDR2[
    "Do2"= "学法语";
            oDT.Rows.Add(oDR2);
            
            
    return oDT;
        }


        
    int iPreStudentNo, iCurrentStudentNo;
        
    int iPreRowNum;
        
    int iMergeBegin = 2, iMergeEnd = 3;
        
    protected void GvStudent_RowDataBound(object sender, GridViewRowEventArgs e)
        
    {
            
    if (e.Row.RowType == DataControlRowType.DataRow)
            
    {
                DataRowView drv 
    = e.Row.DataItem as DataRowView;
                GridViewRow oRow
    =e.Row;
                
    int.TryParse(drv["StudentNo"].ToString(), out iCurrentStudentNo);

                
    if (oRow.RowIndex > 0)
                
    {
                    
    //第二条记录才进行是否合并
                    if (iCurrentStudentNo != iPreStudentNo)
                    
    {
                        
    if (oRow.RowIndex - iPreRowNum > 1)
                        
    {
                            AddRowSpanForColumns(GvStudent.Rows[iPreRowNum], iMergeBegin, iMergeEnd, oRow.RowIndex 
    - iPreRowNum);
                        }

                        iPreStudentNo 
    = iCurrentStudentNo;
                        iPreRowNum 
    = oRow.RowIndex;
                    }

                    
    else
                    
    {
                        RemoveColumnsFromRow(oRow, iMergeBegin, iMergeEnd);
                    }

                }

                
    else
                
    {
                    
    //第一条记录
                    iPreStudentNo = iCurrentStudentNo;
                    iPreRowNum 
    = oRow.RowIndex;
                }

            }

        }


        
    #region Combination Columns
        
    private void AddRowSpanForColumns(GridViewRow oRow, int iIndexOfColumnBegin, int iIndexOfColumnEnd, int iRowspan)
        
    {
            
    //给上一个相同的加上Span 
            for (int i = 0; i < oRow.Cells.Count; i++)
            
    {
                
    if (i < iIndexOfColumnBegin || i > iIndexOfColumnEnd)
                
    {
                    oRow.Cells[i].RowSpan 
    = iRowspan;
                }

            }

        }


        
    /// <summary>
        
    /// 移除列,进行合并
        
    /// </summary>
        
    /// <param name="oRow"></param>
        
    /// <param name="iIndexOfColumnBegin"></param>
        
    /// <param name="iIndexOfColumnEnd"></param>

        private void RemoveColumnsFromRow(TableRow oRow, int iIndexOfColumnBegin, int iIndexOfColumnEnd)
        
    {
            
    for (int i = 0; i < oRow.Cells.Count; i++)
            
    {
                
    if (i < iIndexOfColumnBegin || i > iIndexOfColumnEnd)
                
    {
                    oRow.Cells.RemoveAt(i);
                    i
    --;
                    iIndexOfColumnBegin
    --;
                    iIndexOfColumnEnd
    --;
                }

            }

        }

        
    #endregion
  • 相关阅读:
    Spring 中的事务操作、注解、以及 XML 配置
    ..OBJLED.axf: Error: L6218E: Undefined symbol EXTI_Init (referred from exti.o). 错误修改
    ADC分辨率
    单片机ADC检测4-20mA电路,以及计算方法
    STM32速度---网页讲解
    转载电子发烧友网---STM32的IO口灌入电流和输出驱动电流
    精密电阻性能
    ..OBJCAN.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.
    asp.net---jquery--ajax 实现滚动条滚动到底部分页显示
    柱状图dataLabels 文字格式 以及如何获取柱子的name(名称)属性
  • 原文地址:https://www.cnblogs.com/moss_tan_jun/p/1820870.html
Copyright © 2011-2022 走看看