zoukankan      html  css  js  c++  java
  • GridView动态添加模板列

      1 <%@ Page Language="C#" %>
      2 
      3 <%@ Import Namespace="System.Data" %>
      4 
      5  
      6 
      7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      8 
      9  
     10 
     11 <script runat="server">
     12 
     13     ICollection CreateDataSource()
     14 
     15     {
     16 
     17         DataTable dt = new DataTable();
     18 
     19         DataRow dr;
     20 
     21         dt.Columns.Add(new DataColumn("id"typeof(Int32)));
     22 
     23         dt.Columns.Add(new DataColumn("text"typeof(string)));
     24 
     25         for (int i = 0; i < 6; i++)
     26 
     27         {
     28 
     29             dr = dt.NewRow();
     30 
     31             dr[0= i;
     32 
     33             dr[1= "列表项目 " + i.ToString();
     34 
     35             dt.Rows.Add(dr);
     36 
     37         }
     38 
     39         DataView dv = new DataView(dt);
     40 
     41         return dv;
     42 
     43     }
     44 
     45  
     46 
     47     public class GridViewTemplate : ITemplate
     48 
     49     {
     50 
     51         private DataControlRowType templateType;
     52 
     53         private string columnName;
     54 
     55  
     56 
     57         public GridViewTemplate(DataControlRowType type, string colname)
     58 
     59         {
     60 
     61             templateType = type;
     62 
     63             columnName = colname;
     64 
     65         }
     66 
     67  
     68 
     69         public void InstantiateIn(System.Web.UI.Control container)
     70 
     71         {
     72 
     73             switch (templateType)
     74 
     75             {
     76 
     77                 case DataControlRowType.Header:
     78 
     79                     Literal lc = new Literal();
     80 
     81                     lc.Text = columnName;
     82 
     83                     container.Controls.Add(lc);
     84 
     85                     break;
     86 
     87                 case DataControlRowType.DataRow:
     88 
     89                     DropDownList drr = new DropDownList();
     90 
     91                     drr.ID = "dropdown";
     92 
     93                     drr.AppendDataBoundItems = true;
     94 
     95                     drr.Items.Add(new ListItem("-----请选择------"""));
     96 
     97                     drr.Items.Add(new ListItem("AA""a"));
     98 
     99                     drr.Items.Add(new ListItem("BB""b"));
    100 
    101                     drr.Items.Add(new ListItem("CC""c"));
    102 
    103                     container.Controls.Add(drr);
    104 
    105                     break;
    106 
    107                 default:
    108 
    109                     break;
    110 
    111             }
    112 
    113         }
    114 
    115     }
    116 
    117  
    118 
    119     protected void Page_Load(object sender, EventArgs e)
    120 
    121     {
    122 
    123         if (!IsPostBack)
    124 
    125         {
    126 
    127             TemplateField customField = new TemplateField();
    128 
    129             customField.ShowHeader = true;
    130 
    131             customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "动态添加列");
    132 
    133             customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "");
    134 
    135             GridView1.Columns.Add(customField);
    136 
    137             GridView1.DataSource = CreateDataSource();
    138 
    139             GridView1.DataBind();
    140 
    141         }
    142 
    143     }
    144 
    145  
    146 
    147     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    148 
    149     {
    150 
    151         if (e.Row.RowType == DataControlRowType.DataRow)
    152 
    153         {
    154 
    155             //可以在这里访问数据库的其它字段的值,可以设置默认选择项,具体应用,看自己的发挥了。
    156 
    157             //下面只是例子,举一反三,不再费话了
    158 
    159             DataRowView gv = (DataRowView)e.Row.DataItem;
    160 
    161             int itemSeleted = Int32.Parse(gv.Row["id"].ToString()) > 3 ? 0 : Int32.Parse(gv.Row["id"].ToString());
    162 
    163             DropDownList dr = (DropDownList)e.Row.FindControl("dropdown");
    164 
    165             dr.SelectedIndex = itemSeleted;
    166 
    167         }
    168 
    169     }
    170 
    171 </script>
    172 
    173  
    174 
    175 <html xmlns="http://www.w3.org/1999/xhtml" >
    176 
    177 <head runat="server">
    178 
    179     <title>GridView动态添加模板列的例子</title>
    180 
    181 </head>
    182 
    183 <body>
    184 
    185     <form id="form1" runat="server">
    186 
    187     <div>
    188 
    189       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    190 
    191      OnRowDataBound="GridView1_RowDataBound">
    192 
    193     <Columns>
    194 
    195       <asp:BoundField HeaderText="标题"  DataField="text"/>
    196 
    197     </Columns>
    198 
    199   </asp:GridView>
    200 
    201     </div>
    202 
    203     </form>
    204 
    205 </body>
    206 
    207 </html>

  • 相关阅读:
    浏览器加载AMD标准的输出文件
    Mac安装brew && brew 安装yarn
    插件集
    vue-router复用组件时不刷新数据
    加入sass后运行项目报错:TypeError: this.getResolve is not a function
    安装cnpm后运行报cnpm : 无法加载文件 C:UsersyizonAppDataRoaming pmcnpm.ps1,因为在此系统上禁止运行脚本
    图片canvas跨域问题解决方案之一
    vscode配置
    搭建express服务
    项目初始化
  • 原文地址:https://www.cnblogs.com/feb9903/p/712462.html
Copyright © 2011-2022 走看看