ASP.NET 2.0中合并 GridView 的表头单元格

在实际工作中,往往需要合并表格头部的单元格,下面就是一个实现的例子。运行结果如图: 


   

 

C# 



   

       


       


        <%
        ...
       
            @ Page Language
            =
            "
            C#
            "
             AutoEventWireup
            =
            "
            true
            "
            
        %>
       
           
           


           
           


        <!
        DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
           
           

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
        >
       
           
           


           
           


           


        <
        script
        runat
        ="server"
        >
        ...
       
           
               
               

  ICollection CreateDataSource()
               
               


               

 
            ...
           
                {
                   
                   

    System.Data.DataTable dt
                =
                
                new
                 System.Data.DataTable();
                   
                   

    System.Data.DataRow dr;
                   
                   

    dt.Columns.Add(
                new
                 System.Data.DataColumn(
                "
                学生姓名
                "
                ,
                typeof
                (System.String)));
                   
                   

    dt.Columns.Add(
                new
                 System.Data.DataColumn(
                "
                语文
                "
                ,
                typeof
                (System.Decimal)));
                   
                   

    dt.Columns.Add(
                new
                 System.Data.DataColumn(
                "
                数学
                "
                ,
                typeof
                (System.Decimal)));
                   
                   

    dt.Columns.Add(
                new
                 System.Data.DataColumn(
                "
                英语
                "
                ,
                typeof
                (System.Decimal)));
                   
                   

   
                for
                 (
                int
                 i
                =
                
                0
                ; i
                <
                
                8
                ; i
                
                )
                   
                   


                   

   
                ...
               
                    {
                       
                       

      System.Random rd
                    =
                    
                    new
                     System.Random(Environment.TickCount
                    *
                     i); ;
                       
                       

      dr
                    =
                     dt.NewRow();
                       
                       

      dr[
                    0
                    ]
                    =
                    
                    "
                    学生
                    "
                    
                    
                     i.ToString();
                       
                       

      dr[
                    1
                    ]
                    =
                     System.Math.Round(rd.NextDouble()
                    *
                    
                    100
                    ,
                    2
                    );
                       
                       

      dr[
                    2
                    ]
                    =
                     System.Math.Round(rd.NextDouble()
                    *
                    
                    100
                    ,
                    2
                    );
                       
                       

      dr[
                    3
                    ]
                    =
                     System.Math.Round(rd.NextDouble()
                    *
                    
                    100
                    ,
                    2
                    );
                       
                       

      dt.Rows.Add(dr);
                       
                       

    }
               
                   
                   

    System.Data.DataView dv
                =
                
                new
                 System.Data.DataView(dt);
                   
                   

   
                return
                 dv;
                   
                   

  }
           
               
               


               
               

  protected
            void
             Page_Load(object sender, EventArgs e)
               
               


               

 
            ...
           
                {
                   
                   

   
                if
                 (
                !
                IsPostBack)
                   
                   


                   

   
                ...
               
                    {
                       
                       


                       
                       

      GridView1.BorderColor
                    =
                     System.Drawing.Color.DarkOrange;
                       
                       

      GridView1.DataSource
                    =
                     CreateDataSource();
                       
                       

      GridView1.DataBind();
                       
                       

    }
               
                   
                   

  }
           
               
               


               
               

  protected
            void
             GridView1_RowCreated(object sender, GridViewRowEventArgs e)
               
               


               

 
            ...
           
                {
                   
                   

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


                   

   
                ...
               
                    {
                       
                       

      GridViewRow rowHeader
                    =
                    
                    new
                     GridViewRow(
                    0
                    ,
                    0
                    , DataControlRowType.Header, DataControlRowState.Normal);
                       
                       

      rowHeader.BackColor
                    =
                     System.Drawing.Color.White;
                       
                       

      rowHeader.Font.Bold
                    =
                    
                    true
                    ;
                       
                       


                       
                       

      TableCellCollection cells
                    =
                     e.Row.Cells;
                       
                       

      TableCell headerCell
                    =
                    
                    new
                     TableCell();
                       
                       

      headerCell.Text
                    =
                    
                    ""
                    ;
                       
                       

      rowHeader.Cells.Add(headerCell);
                       
                       


                       
                       

      headerCell
                    =
                    
                    new
                     TableCell();
                       
                       

      headerCell.Text
                    =
                    
                    "
                    学生成绩
                    "
                    ;
                       
                       

      headerCell.ColumnSpan
                    =
                     cells.Count
                    -
                    
                    1
                    ;
                       
                       

      headerCell.HorizontalAlign
                    =
                     HorizontalAlign.Center;
                       
                       


                       
                       

      rowHeader.Cells.Add(headerCell);
                       
                       

      rowHeader.Visible
                    =
                    
                    true
                    ;
                       
                       

      GridView1.Controls[
                    0
                    ].Controls.AddAt(
                    0
                    , rowHeader);
                       
                       

    }
               
                   
                   

  }
           
               
               


               
               

  protected
            void
             GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
               
               


               

 
            ...
           
                {
                   
                   

    e.Row.Attributes.Add(
                "
                style
                "
                ,
                "
                background:#FFF
                "
                );
                   
                   

  }
           
               
               


        </
        script
        >
       
           
           


           
           


        <
        html
        xmlns
        ="http://www.w3.org/1999/xhtml"
        >
       
           
           


        <
        head
        >
       
           
           

 
        <
        title
        >
        合并 GridView 的表头单元格
        </
        title
        >
       
           
           


        </
        head
        >
       
           
           


        <
        body
        >
       
           
           

 
        <
        form
        id
        ="Form1"
         runat
        ="server"
        >
       
           
           

   
        <
        asp:GridView
        ID
        ="GridView1"
         runat
        ="server"
         CellSpacing
        ="1"
         CellPadding
        ="3"
       
           
           

      Font-Size
        ="12px"
         Width
        ="300px"
         BackColor
        ="orange"
         BorderWidth
        ="0"
       
           
           

      OnRowDataBound
        ="GridView1_RowDataBound"
         OnRowCreated
        ="GridView1_RowCreated"
        >
       
           
           

   
        </
        asp:GridView
        >
       
           
           

 
        </
        form
        >
       
           
           


        </
        body
        >
       
           
           


        </
        html
        >
       
           
           

9
7
3
1
2
4
8
:

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Asp.Net] 的这些文章也感兴趣:

Friendly GridView Deletion Messages
asp.net多频道网站架构实现方法
webBrower控件实现winform和webpage交互
C# String Library
绑定txt文件到DataGrid
名称地址(Namespace)
技巧:ASP.NET数据校验部分的封装与应用
不走寻常路设计ASP.NET应用程序的七大绝招
第3章 应用程序和页面框架
ASP.NET 2.0中TextBox服务器控件的ReadOnly和Disabled属性