异步更新 ASP.NET 面板

Posted

技术标签:

【中文标题】异步更新 ASP.NET 面板【英文标题】:Update ASP.NET panel asynchronously 【发布时间】:2011-08-24 18:39:24 【问题描述】:

我需要一些帮助来解决这个问题:

情况: 我有一个用户控件(在 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】:

是否可以从客户端触发异步操作?也就是说,显示您的页面但包含进行 Web 服务调用的 javascript?这样你至少有一些东西要等待,并且你的客户会收到通知,因为它发起了请求。

否则,一旦异步操作完成,我看不到服务器如何更新已经发送到客户端的页面。

【讨论】:

以上是关于异步更新 ASP.NET 面板的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 在嵌套在更新面板中的用户控件中注入 javascript

ASP.NET 在更新面板更新时显示“正在加载...”消息

更新面板中的 ASP.NET 按钮问题

更新面板 AJAX asp.net 后运行脚本

Asp.net 按钮 onclick 在更新面板中不起作用

ASP.Net 文件上传导致使用触发器在更新面板中回发