单击按钮时,我正在尝试向页面添加一组控件。我需要多次添加同一组控件,可能是无限次。目前添加控件按钮单击工作,当你点击它,第二,第三,第四......等时,它不能正常工作。它覆盖并替换当前页面上的控件,因此只显示一组控件。
这是我创建和添加控件的代码,这发生在单击事件
中 Label contactTypeLabel = new Label();
contactTypeLabel.Text = "Contact Type" + contactCount.ToString();
contactTypeLabel.ID = "contactLabel" + contactCount.ToString();
this.panelContacts.Controls.Add(contactTypeLabel);
DropDownList contactTypeDropDownList = new DropDownList();
//loading dropdown
this.panelContacts.Controls.Add(contactTypeDropDownList);
this.panelContacts.Controls.Add(new LiteralControl("<br />"));
这是我的控件添加到的面板..
<asp:UpdatePanel ID="UpdateContacts" runat="server">
<ContentTemplate>
<asp:Panel ID="panelContacts" runat="server">
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnAddContacts" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
我最终做的是使用jQuery创建/删除控件。工作得更好更容易!
答案 0 :(得分:2)
我相信转发器是你最好的选择。
http://xaeryan.blogspot.ca/2009/09/dynamically-adding-removing-textboxes.html
它允许您动态添加所需的任何asp.net控件的新行。
希望这有帮助,
答案 1 :(得分:0)
在单击按钮时发生的每个回发都会重新创建页面。 您必须通过在会话或视图状态中添加列表或类似内容中的控件来保持页面状态。
因此,当发生页面加载时,您可以再次添加控件。
答案 2 :(得分:-1)
您需要了解ASP.NET的工作原理。这不是一个bug或类似的,只是你不知道它是如何工作的。每次页面加载时,您都必须添加所有这些控件。您需要添加之前的那些,以及“新”的那些。你需要以某种方式保持一些状态