2012-07-16 2 views
2

처리하는 데 약간 시간이 걸릴 수있는 주문 입력 페이지가 있으며 사용자는 브라우저가 멈췄다 고 생각하고 닫습니다. 이것은 팝업 브라우저입니다. cmdAdd 버튼을 클릭하면 텍스트 상자의 항목이 데이터베이스에 기록되고 하위 창이 닫히고 상위 항목이 새로 고쳐져 변경 사항이 표시됩니다. 현재 잘 작동 중입니다.ClientScript가 AJAX UpdateProgress와 함께 작동하지 않습니다.

사용자에게 피드백을 제공하기 위해 AJAX UpdateProgress를 추가했지만 이제 cmdAdd 브라우저가 닫히지 않고 부모가 업데이트되지 않습니다. 진행 상태 표시기가 나타나고 데이터베이스가 업데이트되지만 그 상태가 표시됩니다. 어떤 아이디어?

참고 : UpdateProgress 표시기는 사이트의 다른 곳에서 문제없이 사용되며, 팝업 자식 창에서 사용됩니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="orderHistory.aspx.cs" Inherits="JWeb.orderHistory" %> 
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %> 
<!DOCTYPE html> 
<html> 
    <head id="Head1" runat="server"> 
     <title>JWebUtils - Order History Sheet</title> 
     <link href="App_Themes/Theme/Styles.css" rel="stylesheet" type="text/css" /> 
     <link href="cssUpdateProgress.css" rel="stylesheet" type="text/css" /> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      var ModalProgress = '<%= ModalProgress.ClientID %>';   
     </script> 
     <DIV style="width: 700px; vertical-align: top; border-collapse: collapse;" class="pageBody"> 
      <form id="Form1" method="post" runat="server"> 
       <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
       </asp:ToolkitScriptManager> 
       <script type="text/javascript" src="jsUpdateProgress.js"></script> 
       <asp:Panel ID="panelUpdateProgress" runat="server" CssClass="updateProgress"> 
        <asp:UpdateProgress ID="UpdateProg1" DisplayAfter="0" runat="server"> 
         <ProgressTemplate> 
          <div style="position: relative; top: 30%; text-align: center; vertical-align: middle;"> 
           <img src="images/loading.gif" style="vertical-align: middle" alt="Processing" /> 
           Processing ... 
          </div> 
         </ProgressTemplate> 
        </asp:UpdateProgress> 
       </asp:Panel> 
       <asp:ModalPopupExtender ID="ModalProgress" runat="server" TargetControlID="panelUpdateProgress" BackgroundCssClass="modalBackground" PopupControlID="panelUpdateProgress" /> 
<%--    <asp:button id="cmdAdd" tabIndex="5" runat="server" Width="95px" cssClass="dg_buttons" Text="Add to Order" onclick="cmdAdd_Click"></asp:button> 
--%>    <asp:UpdatePanel ID="pnlUpdate" runat="server"> 
        <ContentTemplate> 
         <TABLE id="Table1" style="WIDTH: 100%;"> 
          <TR> 
           <TD class="pageHeader" colspan="2"> 
            <asp:label id="lblTitle" runat="server" Font-Names="Arial" Font-Bold="True">Order History Sheet</asp:label> 
           </TD> 
          </TR> 
          <TR> 
           <TD vertical-align: top;" style="width: 220px;"> 
            <asp:button id="cmdAdd" tabIndex="5" runat="server" Width="95px" 
             cssClass="dg_buttons" Text="Add to Order" onclick="cmdAdd_Click"></asp:button>&nbsp; 
            <asp:button id="cmdClose" tabIndex="5" runat="server" Width="50px" Text="Close" 
             CssClass="dg_buttons" onclientclick="window.close(); return false;"></asp:button>&nbsp; 
            <asp:button id="cmdPrint" tabIndex="5" runat="server" Width="50px" Text="Print" 
             CssClass="dg_buttons" CausesValidation="False" UseSubmitBehavior="False"></asp:button> 
           </TD> 
           <TD vertical-align: top;" style="text-align: right; width: 480px;"> 
            <asp:Label ID="lblCustomerName" runat="server"></asp:Label> 
           </TD> 
          </TR> 
          <TR> 
           <TD vertical-align: top;" style="vertical-align: top" colspan="2"> 
            &nbsp;<span class="style1">* Qty Bought is total items purchased in the last 12 
            months from the current date </span> 
            <table style="WIDTH: 100%; vertical-align: top;"> 
             <TR> 
              <TD colspan="2"> 
               <asp:label id="lblMessage" runat="server" Font-Names="Arial" Font-Size="Small" Width="525px" ForeColor="Red"></asp:label> 
              </TD> 
             </TR> 
             <TR> 
              <TD colspan="2"> 
               <div class="mGrid"> 
                << GRIDVIEW OMITTED FOR BEREVITY >> 
               </div> 
              </TD> 
             </TR> 
            </table> 
           </TD> 
          </TR> 
         </TABLE> 
        </ContentTemplate> 
       </asp:UpdatePanel> 
      </form> 
     </DIV> 
     <script type="text/javascript" src="jsUpdateProgress.js"></script> 
    </body> 
</html> 

cmdAdd_Click :

protected void cmdAdd_Click(object sender, EventArgs e) 
    { 
     string qty = null; 
     string itemCode = null; 
     int orderID = Convert.ToInt32((Session["OrderID"])); 
     int seqNum = 0; 
     int orderSeqNum = 0; 
     string description = null; 
     JWebUtils.priceType pricing = default(JWebUtils.priceType); 
     double price = 0; 
     string type = null; 
     ArrayList sqlParams = new ArrayList(); 
     JWebDB db = new JWebDB(); 
     System.Text.StringBuilder script = new System.Text.StringBuilder(); 
     int discount = 0; 
     string strDisc = null; 
     JWebUtils jweb = new JWebUtils(); 

     << CODE TO UPDATE DB OMITTED FOR BEREVITY >> 

     script.Append("<script language=\"javascript\">"); 
     script.Append("window.opener.document.forms[0].submit();self.close();"); 
     script.Append("</script>"); 

     Session["IsPopup"] = true; 

     ClientScript.RegisterStartupScript(this.GetType(), "XYZ", script.ToString()); 
    } 

답변

0

먼저 당신이 다음 페이지에 ScriptManager를 추가해야하는 cmdAdd_click는

ASPX을 (자녀, 부모가 새로 고쳐집니다 폐쇄) UpdateProgress 컨트롤없이 제대로 작동 사용해야합니다 :

ScriptManager.RegisterStartupScript(... 
+0

아 ... 감사합니다! 그랬어. – Kerberos42

1

AjaxAsp.net 웹 사이트에서 작동하려면 먼저 ScriptManager 컨트롤이 AJAX 사용 ASP.NET 웹 페이지에 대한 클라이언트 스크립트를 관리하므로 aspx 페이지에 Scriptmanager을 추가해야합니다. 기본적으로 ScriptManager 컨트롤은 Microsoft Ajax Library에 대한 스크립트를 페이지에 등록합니다. 이렇게하면 클라이언트 스크립트에서 시스템 확장 유형을 사용하고 을 사용하여 부분 페이지 렌더링 및 웹 서비스 호출과 같은 기능을 지원할 수 있습니다.

아직도 경우에 당신은 당신의 aspx 페이지에 scriptamanager과 함께 ClientScript.RegisterStartupScript 대신 파일을 사용 ScriptManager.RegisterStartupScript 뒤에 코드에서 다음 문제가 있습니다.

+0

좋은 답변 –

관련 문제