Star知识成长的老家

一个优秀的人,需要具备多方面的知识!

用户操作
[即时聊天] [发私信] [加为好友]
zhangstarID:fish_zhang
31311次访问,排名3772好友2人,关注者2
企业管理等,数据库,软件开发,网站开发
fish_zhang的文章
原创 64 篇
翻译 0 篇
转载 107 篇
评论 2 篇
fish_zhang的公告
本博客内容大多来自网络,方便自己所用,如有雷同请多多包涵!!
最近评论
psnccs:WoW Gold
王中义:楼主太厉害了
文章分类
收藏
    相册
    chenhui530的专栏
    DDD
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 ASP.NET 2.0中GridView无限层复杂表头的实现 收藏

    新一篇: ASP.NET 2.0中合并 GridView 的表头单元格  | 旧一篇:  创建表头固定,表体可滚动的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.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)));
        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= "学生" + i.ToString();
          dr[
    2= System.Math.Round(rd.NextDouble() * 1002);
          dr[
    3= System.Math.Round(rd.NextDouble() * 1002);
          dr[
    4= System.Math.Round(rd.NextDouble() * 1002);
          dr[
    5= System.Math.Round(rd.NextDouble() * 1002);
          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,相当于表格的 TR 一行
          GridViewRow rowHeader = new GridViewRow(00, DataControlRowType.Header, DataControlRowState.Normal);
          string HeaderBackColor 
    = "#EDEDED";
          rowHeader.BackColor 
    = System.Drawing.ColorTranslator.FromHtml(HeaderBackColor);

          
    //实现确定要显示的表头样式,也可以通过计算生成

          
    //    <tr>
          //      <td rowspan='2'>关键单元格</td>
          //      <td colspan='2'>表头文字</td>
          //      <td colspan='2'>表头文字</td>
          //      <td>表头文字</td>
          //      </tr>
          //      <tr bgcolor='#FFF'>
          //      <td colspan='2'>表头文字</td>
          //      <td rowspan='2'>表头文字</td>
          //      <td colspan='2'>表头文字</td>
          //      </tr>
          //      <tr bgcolor='#FFF'>
          //      <td>表头文字</td>
          //      <td>表头文字</td>
          //      <td>表头文字</td>
          //      <td>表头文字</td>
          //      <td>表头文字</td>";
          //   </tr>
          // 上面的样式可以设置斜线

          Literal newCells 
    = new Literal();
          newCells.Text 
    = @"表头文字1</th>
                      <th colspan='2'>表头文字2</th>
                      <th colspan='2'>表头文字3</th>
                      <th>表头文字4</th>
                      </tr>
                      <tr bgcolor='
    " + HeaderBackColor + "'>";
          newCells.Text 
    += @"                         
                      <th colspan='2'>表头文字5</th>
                      <th rowspan='2'>表头文字6</th>
                      <th colspan='2'>表头文字7</th>
                      </tr>
                      <tr bgcolor='
    " + HeaderBackColor + "'>";
          newCells.Text 
    += @"  
                      <th>表头文字8</th>
                      <th>表头文字9</th>
                      <th>表头文字10</th>
                      <th>表头文字11</th>
                      <th>表头文字12
    ";

          TableCellCollection cells 
    = e.Row.Cells;
          TableHeaderCell headerCell 
    = new TableHeaderCell();
          
    //下面的属性设置与 <td rowspan='2'>关键单元格</td> 要一致
          headerCell.RowSpan = 2;
          headerCell.Controls.Add(newCells);
          rowHeader.Cells.Add(headerCell);

          rowHeader.Cells.Add(headerCell);
          rowHeader.Visible 
    = true;

          
    //添加到 GridView1
          GridView1.Controls[0].Controls.AddAt(0, rowHeader);
        }
      }

      protected 
    void GridView1_RowDataBound( object sender, GridViewRowEventArgs e )
      {
        
    if (e.Row.RowType == DataControlRowType.Header)
        {
          e.Row.Attributes.Add(
    "style""background:#9999FF;color:#FFFFFF;font-size:14px");
        }
        
    else
        {
          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
    ="600px" BackColor="#000000" BorderWidth="0" OnRowDataBound="GridView1_RowDataBound"
          OnRowCreated
    ="GridView1_RowCreated">
        
    </asp:GridView>
      
    </form>
    </body>
    </html>

    VB.NET

    <%@ Page Language="VB" 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">
      Function CreateDataSource() As ICollection
        Dim dt As System.Data.DataTable 
    = New System.Data.DataTable
        Dim dr As System.Data.DataRow
        dt.Columns.Add(New System.Data.DataColumn(
    "学生班级", GetType(System.String)))
        dt.Columns.Add(New System.Data.DataColumn(
    "学生姓名", GetType(System.String)))
        dt.Columns.Add(New System.Data.DataColumn(
    "语文", GetType(System.Decimal)))
        dt.Columns.Add(New System.Data.DataColumn(
    "数学", GetType(System.Decimal)))
        dt.Columns.Add(New System.Data.DataColumn(
    "英语", GetType(System.Decimal)))
        dt.Columns.Add(New System.Data.DataColumn(
    "计算机", GetType(System.Decimal)))
        Dim i As Integer 
    = 0
        While i 
    < 8
          Dim rd As System.Random 
    = New System.Random(Environment.TickCount * i)

          dr 
    = dt.NewRow
          dr(
    0= "班级" + i.ToString
          dr(
    1= "学生" + i.ToString
          dr(
    2= System.Math.Round(rd.NextDouble * 1002)
          dr(
    3= System.Math.Round(rd.NextDouble * 1002)
          dr(
    4= System.Math.Round(rd.NextDouble * 1002)
          dr(
    5= System.Math.Round(rd.NextDouble * 1002)
          dt.Rows.Add(dr)
          System.Math.Min(System.Threading.Interlocked.Increment(i), i 
    - 1)
        End While
        Dim dv As System.Data.DataView 
    = New System.Data.DataView(dt)
        Return dv
      End Function

      Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        If Not IsPostBack Then
          GridView1.BorderColor 
    = System.Drawing.Color.DarkOrange
          GridView1.DataSource 
    = CreateDataSource()
          GridView1.DataBind()
        End If
      End Sub

      Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If e.Row.RowType 
    = DataControlRowType.Header Then
          Dim rowHeader As GridViewRow 
    = New GridViewRow(00, DataControlRowType.Header, DataControlRowState.Normal)
          Dim HeaderBackColor As String 
    = "#EDEDED"
          rowHeader.BackColor 
    = System.Drawing.ColorTranslator.FromHtml(HeaderBackColor)
          Dim newCells As Literal 
    = New Literal
          newCells.Text 
    = "表头文字1</th>" + _
                          
    " <th colspan='2'>表头文字2</th>" + _
                          
    " <th colspan='2'>表头文字3</th>" + _
                          
    " <th>表头文字4</th>" + _
                          
    " </tr>" + _
                          
    " <tr bgcolor='" + HeaderBackColor + "'>" + _
                          
    "  <th colspan='2'>表头文字5</th>" + _
                          
    "  <th rowspan='2'>表头文字6</th>" + _
                          
    " <th colspan='2'>表头文字7</th>" + _
                          
    " </tr>" + _
                          
    " <tr bgcolor='" + HeaderBackColor + "'>" + _
                          
    "  <th>表头文字8</th>" + _
                          
    "  <th>表头文字9</th>" + _
                          
    "  <th>表头文字10</th>" + _
                          
    "  <th>表头文字11</th>" + _
                          
    "  <th>表头文字12"
          Dim cells As TableCellCollection 
    = e.Row.Cells
          Dim headerCell As TableHeaderCell 
    = New TableHeaderCell
          headerCell.RowSpan 
    = 2
          headerCell.Controls.Add(newCells)
          rowHeader.Cells.Add(headerCell)
          rowHeader.Cells.Add(headerCell)
          rowHeader.Visible 
    = True
          GridView1.Controls(
    0).Controls.AddAt(0, rowHeader)
        End If
      End Sub

      Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If e.Row.RowType 
    = DataControlRowType.Header Then
          e.Row.Attributes.Add(
    "style""background:#9999FF;color:#FFFFFF;font-size:14px")
        Else
          e.Row.Attributes.Add(
    "style""background:#FFF")
        End If
      End Sub
      
    </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
    ="600px" BackColor="#000000" BorderWidth="0" OnRowDataBound="GridView1_RowDataBound"
          OnRowCreated
    ="GridView1_RowCreated">
        
    </asp:GridView>
      
    </form>
    </body>
    </html>
     

    发表于 @ 2008年04月11日 15:39:00|评论(loading...)|编辑

    新一篇: ASP.NET 2.0中合并 GridView 的表头单元格  | 旧一篇:  创建表头固定,表体可滚动的GridView

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © fish_zhang