ASP.NET中动态添加GridView

分类: asp.net   出处:iocblog整理  更新时间:2009-03-29   添加到收藏  

     动态添加列,关键是实现 itemplate.instantiatein 方法。下面是一个添加 gridview 模板列的例子。
  
  <%@ page language="c#" %>
  <%@ import namespace="system.data" %>
  <!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()
   {
   datatable dt = new datatable();
   datarow dr;
   dt.columns.add(new datacolumn("id", typeof(int32)));
   dt.columns.add(new datacolumn("text", typeof(string)));
   for (int i = 0; i < 6; i++)
   {
   dr = dt.newrow();
   dr[0] = i;
   dr[1] = "列表项目 " + i.tostring();
   dt.rows.add(dr);
   }
   dataview dv = new dataview(dt);
   return dv;
   }
  
   public class gridviewtemplate : itemplate [www.iocblog.net 来源]
   {
   private datacontrolrowtype templatetype;
   private string columnname;
  
   public gridviewtemplate( datacontrolrowtype type, string colname )
   {
   templatetype = type;
   columnname = colname;
   }
  
   public void instantiatein( system.web.ui.control container )
   {
   switch (templatetype)
   {
   case datacontrolrowtype.header:
   literal lc = new literal();
   lc.text = columnname;
   container.controls.add(lc);
   break;
   case datacontrolrowtype.datarow:
   dropdownlist drr = new dropdownlist();
   drr.id = "dropdown";
   drr.appenddatabounditems = true;
   drr.items.add(new listitem("-----请选择------",""));
   drr.items.add(new listitem("aa", "a"));
   drr.items.add(new listitem("bb", "b"));
   drr.items.add(new listitem("cc", "c"));
   container.controls.add(drr);
   break;
   default:
   break;
   }
   }
   }
  
   protected void page_load(object sender, eventargs e)
   {
   if (!ispostback)
   {
   templatefield customfield = new templatefield();
   customfield.showheader = true;
   customfield.headertemplate = new gridviewtemplate(datacontrolrowtype.header, "动态添加列");
   customfield.itemtemplate = new gridviewtemplate(datacontrolrowtype.datarow, "");
   gridview1.columns.add(customfield);
   gridview1.datasource = createdatasource();
   gridview1.databind();
   }
   }
  
   protected void gridview1_rowdatabound( object sender, gridviewroweventargs e )
   {
   if (e.row.rowtype == datacontrolrowtype.datarow)
   {
   //可以在这里访问数据库的其它字段的值,可以设置默认选择项,具体应用,看自己的发挥了。
   //下面只是例子,举一反三,不再费话了
   datarowview gv = (datarowview)e.row.dataitem;
   int itemseleted = int32.parse(gv.row["id"].tostring()) > 3 ? 0 : int32.parse(gv.row["id"].tostring());
   dropdownlist dr = (dropdownlist)e.row.findcontrol("dropdown");
   dr.selectedindex = itemseleted;
   }
   }
  </script>
  
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head id="head1" runat="server">
   <title>gridview动态添加模板列的例子</title>
  </head>
  <body>
  <form id="form1" runat="server">
   <asp:gridview id="gridview1" runat="server" autogeneratecolumns="false"
   onrowdatabound="gridview1_rowdatabound">
   <columns>
   <asp:boundfield headertext="标题" datafield="text"/>
   </columns>
   </asp:gridview>
  </form>
  </body>
  </html>[www.iocblog.net 来源]


Tag: gridview



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。