CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

高手请进,如何动态添加新的控件!(100分求解)立即结贴

楼主libra47(可爱的狗狗)2004-12-01 21:23:53 在 .NET技术 / ASP.NET 提问

做综合查询,如何通过一个按钮产生新的控件,这个控件的产生完全通过代码生成,从而实现通过这个按钮产生数量不定的控件(如下拉框)  
   
  谢谢 问题点数:100、回复次数:9Top

1 楼cnhgj(戏子) (没时间练太极)回复于 2004-12-01 21:26:22 得分 35

<script   language=C#   runat=server>  
  int   Count  
  {  
      get  
      {  
          object   o   =   ViewState["Count"];  
          if   (o==null)  
  return   0;  
          return   (int)ViewState["Count"];  
      }  
      set  
      {  
  ViewState["Count"]   =   value;  
      }  
  }  
   
  DropDownList   AddDDL()  
  {  
      TableRow   tr   =   new   TableRow();  
      TableCell   tc   =   new   TableCell();  
   
      DropDownList   ddl   =   new   DropDownList();  
      tc.Controls.Add(ddl);  
      tr.Cells.Add(tc);  
      tbl.Rows.Add(tr);  
   
      return   ddl;  
  }  
   
  void   PopulateDLL(DropDownList   ddl)  
  {  
        for   (int   i=1;   i   <=10;   i++)  
  ddl.Items.Add(i.ToString());  
  }  
   
   
  void   Page_Load(Object   sender,   EventArgs   e)  
  {  
        for   (int   i=0;   i   <   Count;   i++)  
  {  
  AddDDL();  
  }  
  }  
   
  void   Add(Object   sender,   EventArgs   e)  
  {  
      DropDownList   ddl=   AddDDL();  
      PopulateDLL(ddl);  
      Count++;  
  }  
   
  </script>  
   
  <form   runat=server   id=form1>  
  <asp:Table   id=tbl   runat=server   />  
  <asp:Button   id=btn   runat=server   text=add   Onclick="Add"   />  
  <asp:Button   id=btn2   runat=server   text=submit/>  
  </form>  
  Top

2 楼bitm(爱思派)回复于 2004-12-01 21:29:44 得分 0

 
   
  TableCell   tc   =   new   TableCell();  
   
      DropDownList   ddl   =   new   DropDownList();  
      tc.Controls.Add(ddl);Top

3 楼ifwhat()回复于 2004-12-01 21:40:01 得分 0

在页面上拖一个PlaceHolder  
  代码如下:  
  Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click  
                  Dim   ddl   As   New   Web.UI.WebControls.DropDownList  
                  Me.PlaceHolder1.Controls.Add(ddl)  
          End   SubTop

4 楼ifwhat()回复于 2004-12-01 21:43:10 得分 0

 
    Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click  
                  Dim   ddl   As   New   Web.UI.WebControls.DropDownList  
                  Dim   newlistitem   As   New   WebControls.ListItem  
                  newlistitem.Text   =   "aa"  
                  newlistitem.Value   =   "aa"  
                  ddl.Items.Add(newlistitem)  
                  Me.PlaceHolder1.Controls.Add(ddl)  
          End   SubTop

5 楼camark(5天生活)回复于 2004-12-01 21:44:13 得分 0

Sub   Page_Load()  
  Dim   i   as   Integer  
  For   i=0   to   4    
  Dim   myUserControl   as   Control  
  myUserControl   =   Page.LoadControl(“foo.ascx”)  
  PlaceHolder1.Controls.Add(myUserControl)  
  PlaceHolder1.Controls.Add(New   LiteralControl(“<br>”))  
  Next   i  
  End   SubTop

6 楼libra47(可爱的狗狗)回复于 2004-12-01 22:29:13 得分 0

100分,好了立即给分Top

7 楼lhcoolhacker(hugh-lin)回复于 2004-12-02 09:49:06 得分 0

使用PlaceHolder控件,然后在后台将控件添加到PlaceHolder即可Top

8 楼lr2651(戎 The Two Towers)回复于 2004-12-02 10:11:27 得分 35

private   void   loadmyComponents()  
  {  
  if(this.Request.Params["leftPane"]   !=   null)  
  {  
  System.Web.UI.UserControl   myLeftPane   =   (System.Web.UI.UserControl)Page.LoadControl(this.Request.Params["leftPane"].ToString());  
                                  myLeftPane.ID   =   "myLeftPane";  
  this.leftPane.Controls.Add(myLeftPane);  
  this.leftPane.Visible=true;  
  }  
  if(this.Request.Params["contentPane"]   !=   null)  
  {  
          this.contentPane.Controls.Add((System.Web.UI.UserControl)Page.LoadControl(this.Request.Params["contentPane"].ToString()));  
  this.contentPane.Visible   =   true;  
  }  
  if(this.Request.Params["rightPane"]   !=   null)  
  {  
          this.rightPane.Controls.Add((System.Web.UI.UserControl)Page.LoadControl(this.Request.Params["rightPane"].ToString()));  
  this.rightPane.Visible   =   true;  
  }  
  if(this.Request.Params["contentPane"]   ==   null)  
  {  
          this.leftPane.Controls.Add((System.Web.UI.UserControl)Page.LoadControl("~/components/left1.ascx"));  
  this.leftPane.Visible   =   true;  
  this.contentPane.Controls.Add((System.Web.UI.UserControl)Page.LoadControl("~/components/center1.ascx"));  
  this.contentPane.Visible   =   true;  
  }  
  }  
  然后把this.loadmyComponents();加入  
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  this.loadmyComponents();  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
  里面可以实现页面初试化的动态绑定用户控件Top

9 楼tingpig(汀)回复于 2004-12-09 20:24:47 得分 30

主要用control.add方法。  
  可以在循环中写:  
  TableCell   tc   =   new   TableCell();  
  DropDownList   ddl   =   new   DropDownList();  
  tc.Controls.Add(ddl);  
  Top

相关问题

  • 高分求解:想动态添加commandbutton控件,还需要都能触发事件?
  • 动态添加控件
  • 动态添加控件
  • 重分求解!关于动态生成的控件
  • Delphi中能否动态添加控件?
  • 动态添加同一控件!!
  • 怎样动态添加Label控件?
  • 关于TABLE控件动态添加行
  • 动态添加控件问题!!!
  • 是否可以动态添加控件

关键词

  • 控件
  • newlistitem
  • ddl
  • placeholder
  • dropdownlist
  • tablecell
  • tc
  • controls
  • webcontrols
  • byval

得分解答快速导航

  • 帖主:libra47
  • cnhgj
  • lr2651
  • tingpig

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo