通过LoadControl()加载的UserControl中的UpdatePanel不起作用?

时间:2010-07-04 14:26:30

标签: vb.net ajax updatepanel

我希望你可以提供帮助,因为我已经把头撞到了墙上一段时间。 简而言之,我想用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问题中。

请帮助!

1 个答案:

答案 0 :(得分:0)

由于这些是动态控件,您必须在回发时将它们添加到页面中,因此您需要删除'IF Me.IsPostBack = False''如果'结束'。否则控制将在回发后从页面中消失。

这是否解决了您的问题或究竟什么不起作用?