我希望你可以提供帮助,因为我已经把头撞到了墙上一段时间。 简而言之,我想用LoadControl动态加载UserControls,它包含自己的更新面板,当它们在页面上时,能够通过他们的孩子单独触发他们的更新。
为了更好地解释,请参阅我的极为简化的问题示例:
Default.aspx的
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</div>
</form>
Default.aspx.vb
IF Me.IsPostBack = False
Dim control As Control = LoadControl("WebUserControl.ascx")
PlaceHolder1.Controls.Add(control)
Dim control2 As Control = LoadControl("WebUserControl.ascx")
PlaceHolder1.Controls.Add(control2)
Dim control3 As Control = LoadControl("WebUserControl.ascx")
PlaceHolder1.Controls.Add(control3)
End If
WebUserControl.ascx
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<%= Now.ToLongTimeString%>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
如果你运行它,我希望加载每个控件,添加到占位符,然后当你单击该控件中的按钮时,只有该控件触发更新。
相反,它似乎不起作用。
如果我使用常用标记将控件添加到页面中,它们可以正常工作,因此问题出在loadControl / placeholder问题中。
请帮助!
答案 0 :(得分:0)
由于这些是动态控件,您必须在回发时将它们添加到页面中,因此您需要删除'IF Me.IsPostBack = False''如果'结束'。否则控制将在回发后从页面中消失。
这是否解决了您的问题或究竟什么不起作用?