Asp.Net - UpdatePanel - 添加许多文本框

时间:2009-09-27 23:06:10

标签: c# asp.net ajax textbox updatepanel

我的问题是每次点击“测试”按钮时,只创建一个文本框。如果我点击两次,我希望出现两个文本框。

我试试这个solution,除了一件事外,似乎工作得很好。文本框的每个文本都被(重新)创建,因此我放弃了用户输入的值...

.aspx的:

<asp:UpdatePanel ID="upTest" runat="server">
    <ContentTemplate>
        <asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" />
        <asp:Panel ID="pnTest" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

代码隐藏

protected void btnTest_Click(object sender, EventArgs e)
{
    pnTest.Controls.Add(new TextBox());
}

2 个答案:

答案 0 :(得分:2)

问题是您希望UpdatePanel处理您的视图状态,它只适用于预定义的控件。因为你在飞行中制作它们没有任何视图状态所以你需要自己做所有的视图状态管理。

您可以将值存储在每个回发上,然后在重新创建控件后重新插入它们,但没有内置功能来执行此操作。每次回发时,您都可以将控件名称存储为视图状态键,然后存储该值。然后,当您重新创建控件时,您可以将控件名称(应该是相同的)和值与新创建的控件匹配,但显然最新的控件不会存储条目。

答案 1 :(得分:0)

此链接应指向正确的方向:

Dynamic Web Controls, Postbacks, and View State