ASP.NET:在Page_Load中动态加载用户控件(包含UpdatePanel)以便以后呈现

时间:2012-03-29 07:06:22

标签: asp.net events user-controls updatepanel scriptmanager

我有一个页面(带有repater),用于加载包含更新面板的用户控件。我想在转发器绑定项目时动态加载用户控件(即ItemDataBound事件)。

用户控制可视加载好,但UpdatePanels在触发时不会更新(我可以看到其他UpdatePanels发生异步回发)。这是因为脚本管理器管理页面的LoadPreRender之间的更新面板信息,并且转发器的ItemDataBound事件发生在此之后(来自this answer)。因此,当我在Page_LoadPage_Init加载用户控件时,异步回发工作正常。

问题是,在转发器的ItemDataBound事件之前,我不知道在哪里插入用户控件。那么,有什么方法可以解决这个问题吗?我可以在Page_Load加载用户控件并让脚本管理器在控件中注册更新面板,然后将控件放在ItemDataBound事件处吗?

所以,代码是这样的:

页:

    <asp:Repeater runat="server" ID="repeater" onitemdatabound="repeater_ItemDataBound">
    <ItemTemplate>
        <asp:PlaceHolder runat="server" ID="plhContent" />
    </ItemTemplate>
    </asp:Repeater>

页面代码隐藏:

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    // dynamically insert the user control in the placeholder
    var uc = LoadControl("~/UserControl.ascx");
    placeHolder.Controls.Add(uc);
}

0 个答案:

没有答案