2011-05-13 190 views
3

我需要一些幫助,這個問題:更新ASP.NET面板異步

情況: 我有一個用戶控件(在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

沒有人知道這個?請幫忙,這真的很緊急! – RubenHerman 2011-05-16 12:07:34

回答

0

是否可以從客戶端觸發異步操作?也就是說,顯示你的頁面,但包括使Web服務調用的JavaScript?這樣你至少有什麼可以等待,並且你的客戶會收到通知,因爲它啓動了請求。

否則我不會看到服務器在異步操作完成後如何更新已經轉到客戶端的頁面。