缤纷多彩的植物信息世界

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

1、页面代码

2009-04-28_172656

   1:  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
   2:   
   3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   4:  <html xmlns="http://www.w3.org/1999/xhtml">
   5:  <head runat="server">
   6:      <title>GridView控件中动态添加模板列</title>
   7:  </head>
   8:  <body>
   9:      <form id="form1" runat="server">
  10:      <div align="center">
  11:          <table border="1" cellpadding="0" cellspacing="0">
  12:              <tr>
  13:                  <td style="font-weight: bold">
  14:                      GridView控件中动态添加模板列
  15:                  </td>
  16:              </tr>
  17:              <tr>
  18:                  <td>
  19:                      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
  20:                          Font-Size="10.5pt" ForeColor="#333333">
  21:                          <Columns>
  22:                              <asp:BoundField HeaderText="标题" DataField="text" />
  23:                          </Columns>
  24:                          <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
  25:                          <RowStyle BackColor="#E3EAEB" />
  26:                          <EditRowStyle BackColor="#7C6F57" />
  27:                          <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
  28:                          <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
  29:                          <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
  30:                          <AlternatingRowStyle BackColor="White" />
  31:                      </asp:GridView>
  32:                  </td>
  33:              </tr>
  34:              <tr>
  35:                  <td style="font-size: 9pt; height: 26px;">
  36:                      &nbsp;请选择要添加的模板列数:<asp:DropDownList ID="DropDownList1" runat="server">
  37:                          <asp:ListItem>1</asp:ListItem>
  38:                          <asp:ListItem>2</asp:ListItem>
  39:                          <asp:ListItem>3</asp:ListItem>
  40:                          <asp:ListItem>4</asp:ListItem>
  41:                          <asp:ListItem>5</asp:ListItem>
  42:                          <asp:ListItem>6</asp:ListItem>
  43:                          <asp:ListItem>7</asp:ListItem>
  44:                          <asp:ListItem>8</asp:ListItem>
  45:                          <asp:ListItem>9</asp:ListItem>
  46:                          <asp:ListItem>10</asp:ListItem>
  47:                          <asp:ListItem>15</asp:ListItem>
  48:                          <asp:ListItem>20</asp:ListItem>
  49:                      </asp:DropDownList>
  50:                      <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="添加模板列" Font-Size="10pt" />
  51:                  </td>
  52:              </tr>
  53:          </table>
  54:      </div>
  55:      </form>
  56:  </body>
  57:  </html>

2、执行代码:

   1:  using System;
   2:  using System.Data;
   3:  using System.Web.UI;
   4:  using System.Web.UI.WebControls;
   5:  using System.Collections;
   6:   
   7:  public partial class _Default : System.Web.UI.Page 
   8:  {
   9:      protected void Page_Load(object sender, EventArgs e)
  10:      {
  11:      }
  12:      /// <summary>
  13:      /// Creates the data source.
  14:      /// 利用ICollection接口定义一个CreateDataSource()方法,用来将数据填充到数据集中,并返回一个数据集视图。
  15:      /// </summary>
  16:      /// <returns></returns>
  17:      ICollection CreateDataSource()
  18:      {
  19:          DataTable dt = new DataTable();
  20:          DataRow dr;
  21:          dt.Columns.Add(new DataColumn("id", typeof(Int32)));
  22:          dt.Columns.Add(new DataColumn("text", typeof(string)));
  23:          for (int i = 0; i < 6; i++)
  24:          {
  25:              dr = dt.NewRow();
  26:              dr[0] = i;
  27:              dr[1] = "列表" + i.ToString();
  28:              dt.Rows.Add(dr);
  29:          }
  30:          DataView dv = new DataView(dt);
  31:          return dv;
  32:      }
  33:      /// <summary>
  34:      /// 通过ITemplate接口的InstantiateIn(Contrl Container)方法定义要添加的模版列和头和内容
  35:      /// </summary>
  36:      public class GridViewTemplate : ITemplate
  37:      {
  38:          private DataControlRowType dcrType;
  39:          private string columnName;
  40:          public GridViewTemplate(DataControlRowType type, string colname)
  41:          {
  42:              dcrType = type;
  43:              columnName = colname;
  44:          }
  45:          public void InstantiateIn(System.Web.UI.Control container)
  46:          {
  47:              switch (dcrType)
  48:              {
  49:                  case DataControlRowType.Header:
  50:                      Literal literal = new Literal();
  51:                      literal.Text = columnName;
  52:                      container.Controls.Add(literal);
  53:                      break;
  54:                  case DataControlRowType.DataRow:
  55:                      DropDownList ddl = new DropDownList();
  56:                      ddl.ID = "dropdownlist";
  57:                      ddl.AppendDataBoundItems = true;
  58:                      ddl.Items.Add(new ListItem("-----请选择------", ""));
  59:                      ddl.Items.Add(new ListItem("AA", "a"));
  60:                      ddl.Items.Add(new ListItem("BB", "b"));
  61:                      ddl.Items.Add(new ListItem("CC", "c"));
  62:                      container.Controls.Add(ddl);
  63:                      break;
  64:                  default:
  65:                      break;
  66:              }
  67:          }
  68:      }
  69:      /// <summary>
  70:      /// Handles the Click event of the Button1 control.
  71:      /// </summary>
  72:      /// <param name="sender">The source of the event.</param>
  73:      /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  74:      protected void Button1_Click(object sender, EventArgs e)
  75:      {
  76:          for (int index = 1; index < GridView1.Columns.Count; index++)
  77:          {
  78:              GridView1.Columns[index].Visible = false;
  79:          }
  80:          for (int i = 0; i < Convert.ToInt32(DropDownList1.SelectedValue); i++)
  81:          {
  82:              TemplateField tf = new TemplateField();
  83:              tf.ShowHeader = true;
  84:              tf.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "动态添加列");
  85:              tf.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "");
  86:              GridView1.Columns.Add(tf);
  87:              GridView1.DataSource = CreateDataSource();
  88:              GridView1.DataBind();
  89:          }
  90:      }
  91:  }
posted on 2009-04-28 17:26  虎克  阅读(608)  评论(0)    收藏  举报