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

首先看看效果:

 

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

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

DymanicallyCreateTextBox()
 private void DymanicallyCreateTextBox()
    { 
        TextBox tb = new TextBox();
        tb.ID = "TextBox1";
        this.PlaceHolderLoadTextBox.Controls.Add(tb);
    }

 

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

View Code
 protected void ButtonDyGenerate_Click(object sender, EventArgs e)
    {
        ViewState["Insus.NET"] = true;
        DymanicallyCreateTextBox(); 
    }

 

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

Page_Load
 protected void Page_Load(object sender, EventArgs e)
    {
        if (ViewState["Insus.NET"] != null)
            DymanicallyCreateTextBox(); 
    }

 

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

ButtonGetTextBoxValue_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;
            }
        }
    }

 

 

posted @ 2012-09-23 00:43  Insus.NET  阅读(4538)  评论(6编辑  收藏  举报