首先看看效果:

动态产生TextBox,并获取TextBox值。_TextBox

 

动态添加,需要在PostBack之后,保留状态,因此需要用到ViewState. 下面是简单代码。


动态产生TextBox,并获取TextBox值。_TextBox_02动态产生TextBox,并获取TextBox值。_PlaceHolder_03View Code


  显示文本框结果:<asp:Label ID="LabelResult" runat="server" Text=""></asp:Label><br />

            这里装载动态产生的文本框:

            <asp:PlaceHolder ID="PlaceHolderLoadTextBox" runat="server"></asp:PlaceHolder><br />


            <asp:Button ID="ButtonDyGenerate" runat="server" Text="动态产生文本框" OnClick="ButtonDyGenerate_Click" />

            <asp:Button ID="ButtonGetTextBoxValue" runat="server" Text="获取文本框值" OnClick="ButtonGetTextBoxValue_Click" />


 

动态产生TextBox:


动态产生TextBox,并获取TextBox值。_TextBox_02动态产生TextBox,并获取TextBox值。_PlaceHolder_03DymanicallyCreateTextBox()


 private void DymanicallyCreateTextBox()

    { 

        TextBox tb = new TextBox();

        tb.ID = "TextBox1";

        this.PlaceHolderLoadTextBox.Controls.Add(tb);

    }


 

当用户点击铵钮[动态产生文本框]事件时,记得用ViewState来记录是否有动态创建过TextBox。


动态产生TextBox,并获取TextBox值。_TextBox_02动态产生TextBox,并获取TextBox值。_PlaceHolder_03View Code


 protected void ButtonDyGenerate_Click(object sender, EventArgs e)

    {

        ViewState["Insus.NET"] = true;

        DymanicallyCreateTextBox(); 

    }


 

在Page_Load事件,去判断ViewState是否为真。


动态产生TextBox,并获取TextBox值。_TextBox_02动态产生TextBox,并获取TextBox值。_PlaceHolder_03Page_Load


 protected void Page_Load(object sender, EventArgs e)

    {

        if (ViewState["Insus.NET"] != null)

            DymanicallyCreateTextBox(); 

    }


 

最后是获取动态产生的TextBox,当用户输入值这后,点击[获取文本框值]铵钮,获取值。


动态产生TextBox,并获取TextBox值。_TextBox_02动态产生TextBox,并获取TextBox值。_PlaceHolder_03ButtonGetTextBoxValue_Click


 protected void ButtonGetTextBoxValue_Click(object sender, EventArgs e)

    {

        if (ViewState["Insus.NET"] != null)

        {

            foreach (Control ctl in this.PlaceHolderLoadTextBox.Controls)

            {

                if (ctl is TextBox && ((TextBox)ctl).ID == "TextBox1")

                    this.LabelResult.Text = (ctl as TextBox).Text;

                break;

            }

        }

    }