我需要一些帮助解决这个问题:
情况: 我有一个usercontrol(在SharePoint中)读取查询字符串并使用异步事件处理它。当它很忙时,会显示一个微调器。事件结束后,usercontrol中的updatepanel应该更新并显示消息(+隐藏微调器)
代码:我有一个在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)
答案 0 :(得分:0)
是否可以从客户端启动异步操作?也就是说,显示您的页面但包含进行Web服务调用的JavaScript?这样你至少有一些等待的东西,并且你的客户会得到通知,因为它发起了请求。
否则我看不到async操作完成后服务器如何更新已经转到客户端的页面。