天天看點

GridView動态生成表頭

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

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

<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() * 100, 2);

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

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

      dr[5] = 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,相當于表格的 TR 一行

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

      string HeaderBackColor = "#EDEDED";

      rowHeader.BackColor = System.Drawing.ColorTranslator.FromHtml(HeaderBackColor);

      //實作确定要顯示的表頭樣式,也可以通過計算生成

      //    <tr>

      //      <td rowspan='2'>關鍵單元格</td>

      //      <td colspan='2'>表頭文字</td>

      //      <td>表頭文字</td>

      //      </tr>

      //      <tr bgcolor='#FFF'>

      //      <td rowspan='2'>表頭文字</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>

      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.Visible = true;

      //添加到 GridView1

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

  protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e )

      e.Row.Attributes.Add("style", "background:#9999FF;color:#FFFFFF;font-size:14px");

    else

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

</script>

<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>

本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/archive/2012/03/27/2419862.html,如需轉載請自行聯系原作者

繼續閱讀