动态地向ASP .NET页面添加更多控件?

时间:2013-10-25 06:23:26

标签: c# asp.net controls

我正在使用System.Web.UI.WebControls.Panel来保留FormTable。在FormTable我在 PostBack事件上添加了更多控件,然后将其添加回System.Web.UI.WebControls.Panel。在这种情况下,我不想丢失现有控件的状态,并希望向FormTable添加更多控件。这将再次分配给System.Web.UI.WebControls.Panel

如果我清除System.Web.UI.WebControls.Panel然后添加新的FormTable(现在添加了一些控件),那么这样可以正常工作,但控件的状态将会丢失。

我需要添加更多控件,保持现有控件的状态不变。我怎样才能实现它?

EG。

Panel-> FormTable正在举行

TextBox1 : 1
TextBox2 : 2

动态点击按钮我再添加一个TextBox:

TextBox1 : "1"
TextBox2 : "2"
TextBox3 : "3"

但是为了添加第3个TextBox3,我将不得不清除FormTable,否则它将抛出与Controls的ID相关的异常,说先前的Control States与你这次分配的状态不匹配。

如果我清除了System.Web.UI.WebControls.Panel然后添加了新的FormTable,那么将添加TextBoxes,但它们的状态将会丢失,输出将如下所示:

TextBox1 : ""
TextBox2 : ""
TextBox3 : ""

>> 我想为它添加更多信息。在动态添加新项目到我的FormTable时。我将在表中的任何位置添加这些新项目,这样Control的ID将不再与FormTable中先前创建的Controls ID相匹配。

E.g。在FormTable的第4位,我可以动态插入以前是TextBox的HyperLink。将TextBox移动到位置5。

1 个答案:

答案 0 :(得分:0)

将要保留状态的所有内容包装在Updatepanel中,以便在没有回发的情况下部分呈现。 :

  <asp:ScriptManager ID="ScriptManager1" 
                               runat="server" />
            <asp:UpdatePanel ID="UpdatePanel1"
                             runat="server">
                <ContentTemplate>
                           //content
                </ContentTemplate>
           </asp:UpdatePanel>