2011-10-06 83 views
2

我們正在與我們的商店/網站問題。 我們正在使用jQuery來爲模式啓動AJAXToolkitExtender。
問題是,我們應該在更新面板中包裝按鈕,該面板調用觸發模式的jQuery。 我們的問題在於,我們因爲某些原因在Firefox和Chrome中獲得了雙倍的回覆。反過來,當我們從服務器獲取錯誤並顯示在UI上時,它會清除我們的購物車。我們希望通過jQuery獲得我們的調用狀態,而不必使用UpdatePanel。 UpdatePanels在Firefox中發現了一些已知問題,因爲它們發回了雙引號。有沒有人有直接的客戶端網站解決方案或解決方案,我們不必使用更新面板來獲取狀態或調用服務器並顯示和隱藏更新面板。 我們的代碼如下: 在ASCXjQuery Asp.NET Modal Progess無需更新面板

<script type="text/javascript" language="javascript"> 
    var ModalProgress = '<%= ModalProgress.ClientID %>';   
</script> 
<script type="text/javascript" src="/Scripts/jsUpdateProgress.js"></script> 
<asp:Panel ID="panelUpdateProgress" runat="server" CssClass="updateProgress"> 
     <asp:UpdateProgress ID="UpdateProg1" DisplayAfter="0" runat="server"> 

      <ProgressTemplate> 
       <div id="processingOrderProgress"> 
       <div id="processingOrderProgressText"> 
<%=GetLocaleResourceString("Museum.MuseumOrderConfirmationProcessingText")%> 
</div> 

      <img src="../App_Themes/Museum/images/museumLayout/loading.gif" alt="Processing" /> 
       </div> 
      </ProgressTemplate> 
     </asp:UpdateProgress> 
    </asp:Panel> 

    <ajaxToolkit:ModalPopupExtender ID="ModalProgress" runat="server" TargetControlID="panelUpdateProgress" 
     BackgroundCssClass="modalBackground" PopupControlID="panelUpdateProgress" /> 

這是從jsUpdateProgress.js

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginReq); 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endReq); 

function beginReq(sender, args) { 
    // shows the Popup 
    $find(ModalProgress).show(); 
} 

function endReq(sender, args) { 
    // hides the Popup 
    $find(ModalProgress).hide(); 
} 
+0

執行此操作的一種方法是將PageMethods(或Web Service)與jQuery Ajax調用一起使用。 SO中有很多關於如何做到這一點的例子。 – Icarus

回答

1

我打算關閉它。我實際上使用我的按鈕單擊來觸發或顯示與jQuery的模態div。我不等待beginReq或endReq,我只是開啓模態。該頁面做回發,因爲在jQuery中我將div隱藏在document.ready上,當回發發生時,模式消失。我想你也可以在頁面init上做任何事情。這是我的解決方案。無需更新面板。

$(document).ready(function(){

$('#modalDiv').hide);

$('.submitBtn').click(function(){

$('#modalDiv').show(); 

});

//頁面做了回傳或重新加載模態消失。

});

那樣簡單。

0

你其實並不需要再增加一個UpdateProgess控制,因爲在方法上的JS你jsUpdateProgress.js文件已經足以捕獲更新進度和完成。

我建議您用HTML div彈出窗口替換UpdateProgress和ModalPopupExtender,並使用beginReq和endReq方法來顯示。爲了更好的可用性,你應該添加一個cancelReq方法,允許你取消當前的請求。

+0

我是否需要將我的按鈕封裝在一個updatepanel中來觸發所有這些?目前正在按鈕周圍使用什麼。 – ClosDesign

+0

是的,你仍然需要,或者你也可以在表單的某個地方創建一個更新面板,併爲click事件添加一個異步按鈕回發,這樣你就不需要將它包裝在裏面。 – Gilbert