Обновление панели ASP.NET асинхронно - PullRequest
3 голосов
/ 13 мая 2011

Мне нужна помощь с этой проблемой:

Положение: У меня есть usercontrol (в SharePoint), который читает строку запроса и обрабатывает ее с асинхронным событием. Пока он занят, показывается счетчик. После завершения события панель обновления в пользовательском контроле должна обновить и показать сообщение (+ скрыть счетчик)

Код: У меня есть функция, которая вызывается асинхронно в событии UserControl_Unload.

private delegate void AsyncFunction(string activation);

void UserControl_Unload(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        AsyncFunction dlgt = new AsyncFunction(this.CheckUrl);
        AsyncCallback callback = new AsyncCallback(FunctionCallBack);
        IAsyncResult ar = dlgt.BeginInvoke(activationcode, callback, null);
    }
}
private void CheckUrl(string lalala)
{
   // Some code
}

Пользовательская разметка управления:

<asp:UpdatePanel runat="server" id="pnlContent" updatemode="Conditional"      ChildrenAsTriggers="true">
    <ContentTemplate>
         <asp:UpdatePanel runat="server" id="pnlStatus" UpdateMode="Conditional"  ChildrenAsTriggers="false">
            <ContentTemplate>
                <asp:Label runat="server" ID="lblMessage" />
                <asp:LinkButton runat="server" ID="btnHome" Text="Terug naar welkom-pagina" PostBackUrl="<% $SPUrl:~sitecollection %>"  />
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdatePanel runat="server" id="pnlGegevens" UpdateMode="Conditional" ChildrenAsTriggers="false">
            <ContentTemplate>
                <div><asp:Image runat="server" ID="imgLoading" AlternateText="Loading..." CssClass="gb_pl_loadingImage" ImageUrl="<% $SPUrl:~sitecollection/Style Library/GB-VW Styles/Images/ajax-loader.gif %>"/></div>
                <div class="gb_pl_loading">Even geduld aub. De gebruiker wordt geactiveerd...</div>
            </ContentTemplate>
        </asp:UpdatePanel>
    </ContentTemplate>
</asp:UpdatePanel>

Это все прекрасно работает, но когда мне нужно обновить панель, она не работает.

private void FunctionCallBack(IAsyncResult test)
{
    pnlContent.Update()
}

Кто-нибудь знает, как это решить? (если это возможно, используйте только asp, c # или javascript)

1 Ответ

0 голосов
/ 17 мая 2011

Возможно ли отключить асинхронную операцию с клиента? То есть отображать вашу страницу, но включать JavaScript, который делает вызов веб-службы? Таким образом, вам, по крайней мере, есть, чего ждать, и ваш клиент получит уведомление, потому что он инициировал запрос.

В противном случае я не вижу, как страница, которая уже отправлена ​​клиенту, может быть обновлена ​​сервером после завершения асинхронной операции.

...