I have an order entry page that can take a little while to process, and users think that the browser has frozen and the close it. This is a pop up browser, when the cmdAdd button is clicked the items from the text boxes are written to the database, the child window is closed and the parent is refreshed to see the changes. This is currently working fine.
I added an AJAX UpdateProgress to give the user some feedback, but now the cmdAdd browser does not close and the parent does not update. The progress indicator shows, and the database is updated, but thats it. Any ideas?
Note: The UpdateProgress indicator is used elsewhere in the site, without problems, it is just when I use it in the pop-up child window. The cmdAdd_click works properly without the updateProgress control (child is closed, parent is refreshed)
ASPX:
<%@ 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>
<asp:button id="cmdClose" tabIndex="5" runat="server" Width="50px" Text="Close"
CssClass="dg_buttons" onclientclick="window.close(); return false;"></asp:button>
<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">
<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());
}
First you should add a
ScriptManagerto your page and then should use :