做综合查询,如何通过一个按钮产生新的控件,这个控件的产生完全通过代码生成,从而实现通过这个按钮产生数量不定的控件(如下拉框)谢谢

解决方案 »

  1.   

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

  2.   

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

  3.   

    在页面上拖一个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 Sub
      

  4.   


     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 Sub
      

  5.   

    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 Sub
      

  6.   

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

  7.   

    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
    里面可以实现页面初试化的动态绑定用户控件
      

  8.   

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