C#后台创建控件并获取值

前台代码

 <form id="form1" runat="server">

    <div>

        <div class="item">

            Please input a number:

            <asp:TextBox runat="server" CssClass="item" ID="txtTextCount"></asp:TextBox>

           

            <asp:Button runat="server" ID="btnCreate" Text="Create TextBox List" ValidationGroup="CreateTextBox"

                OnClick="btnCreate_Click" />&nbsp;&nbsp;

            <asp:Button runat="server" ID="btnOK" Text="获取控件值" ValidationGroup="ShowListContent"

                OnClick="btnOK_Click" />

        </div>

        <div runat="server" id="divControls" class="item">

        </div>

        <div runat="server" id="divMessage">

        </div>

    </div>

    

    </form>

 

后台代码
 protected void Page_Load(object sender, EventArgs e)

    {

        if (this.IsPostBack)

        {

            int txtCount = int.Parse(txtTextCount.Text);



            // 注意:每次PostBack时,都需要重新动态创建TextBox 

            CreateTextBoxList(txtCount);

        }

    }

    ///<summary>  



    /// Create textbox list 

    ///</summary> 

    ///<param name="num">textbox list count</param> 

    private void CreateTextBoxList(int num)

    {

        HtmlGenericControl div;

        HtmlGenericControl span;

        TextBox txt;

        //RegularExpressionValidator rev;



        for (int i = 0; i < num; i++)

        {

            //创建div 

            div = new HtmlGenericControl();

            div.TagName = "div";

            div.ID = "divTextBox" + i.ToString();

            div.Attributes["class"] = "item2";



            //创建span 

            span = new HtmlGenericControl();

            span.ID = "spanTextBox" + i.ToString();

            span.InnerHtml = "Url Address" + (i + 1).ToString() + ":";



            //创建TextBox 

            txt = new TextBox();

            txt.ID = "txt" + i.ToString();

            txt.CssClass = "input";



            //创建格式验证控件,并且将其关联到对应的TextBox 

            //rev = new RegularExpressionValidator();

            //rev.ID = "rev" + i.ToString();

            //rev.ControlToValidate = txt.ID;

            //rev.Display = ValidatorDisplay.Dynamic;

            //rev.ValidationGroup = "ShowListContent";

            //rev.ValidationExpression = @"(http(s)?://)?([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?";

            //rev.ErrorMessage = "Invalid url Address!";



            //添加控件到容器 

            div.Controls.Add(span);

            div.Controls.Add(txt);

            //div.Controls.Add(rev);

            divControls.Controls.Add(div);

        }

    }







    protected void btnCreate_Click(object sender, EventArgs e)

    {

        txtTextCount.Enabled = false;

        btnCreate.Enabled = false;

    }



    protected void btnOK_Click(object sender, EventArgs e)

    {

        TextBox txt;

        HtmlGenericControl span;

        StringBuilder sbResult = new StringBuilder();

        int txtCount = int.Parse(txtTextCount.Text);



        //遍历获取动态创建的TextBox们中的Text值 

        for (int i = 0; i < txtCount; i++)

        {

            //注意:这里必须通过上层容器来获取动态创建的TextBox,才能获取取ViewState内容 

            txt = divControls.FindControl("txt" + i.ToString()) as TextBox;



            if (txt != null && txt.Text.Trim().Length > 0)

            {

                sbResult.AppendFormat("Url Address{0}: {1}.<br />", i + 1, txt.Text.Trim());

            }

        }

        //遍历获取动态创建的TextBox们中的Text值 

        for (int i = 0; i < txtCount; i++)

        {

            //注意:这里必须通过上层容器来获取动态创建的TextBox,才能获取取ViewState内容 

            span = divControls.FindControl("spanTextBox" + i.ToString()) as  HtmlGenericControl ;



            if (span != null && span.InnerText.Trim().Length > 0)

            {

                sbResult.AppendFormat("Url Address{0}: {1}.<br />", i + 1, span.InnerText.Trim());

            }

        }





        divMessage.InnerHtml = sbResult.ToString();

    }

 

 

你可能感兴趣的:(C#)