ASP.NET: динамически загружать пользовательский элемент управления (содержащий UpdatePanel) в Page_Load для последующей визуализации - PullRequest
0 голосов
/ 29 марта 2012

У меня есть страница (с репатером), которая загружает пользовательские элементы управления, которые содержат панели обновления.Я хочу загружать пользовательские элементы управления динамически, когда повторитель связывает элементы (т.е. при событии ItemDataBound).

Пользовательские элементы управления визуально загружаются нормально, но UpdatePanels не обновляется при их срабатывании (я вижу асинхронные обратные вызовы для других UpdatePanels).Это связано с тем, что диспетчер сценариев управляет информацией панели обновления между Load и PreRender страницы, и после этого происходит событие ItemDataBound ретранслятора (это от этого ответа ).Поэтому, когда я загружаю пользовательские элементы управления на Page_Load или Page_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);
}
...