2

処理に少し時間がかかる注文入力ページがあり、ユーザーはブラウザがフリーズしたと考えて閉じます。これはポップアップ ブラウザです。cmdAdd ボタンをクリックすると、テキスト ボックスの項目がデータベースに書き込まれ、子ウィンドウが閉じられ、親ウィンドウが更新されて変更が表示されます。これは現在正常に動作しています。

ユーザーにフィードバックを提供するために AJAX UpdateProgress を追加しましたが、cmdAdd ブラウザーが閉じず、親が更新されません。進行状況インジケーターが表示され、データベースが更新されますが、それだけです。何か案は?

注: UpdateProgress インジケーターは、サイトの他の場所で問題なく使用されています。ポップアップの子ウィンドウで使用したときだけです。cmdAdd_click は、updateProgress コントロールなしで適切に機能します (子は閉じられ、親は更新されます)。

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>&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());
    }
4

2 に答える 2

1

コントロールがAJAX対応のWebページのクライアントスクリプトを管理するため、 WebサイトAjaxで作業するには、最初にaspxページAsp.netに追加する必要があります。デフォルトでは、コントロールはMicrosoft Libraryのスクリプトをページに登録します。これにより、クライアントスクリプトは型システム拡張機能を使用し、部分ページレンダリングやWebサービス呼び出しなどの機能をサポートできます。ScriptmanagerScriptManagerASP.NETScriptManagerAjax

それでも問題が発生する場合は、aspxページScriptManager.RegisterStartupScriptの代わりにファイルの背後にあるコードを使用しClientScript.RegisterStartupScript てください。scriptamanager

于 2012-07-16T09:42:43.880 に答える
0

最初にScriptManagerページに を追加してから、 を使用する必要があります。

ScriptManager.RegisterStartupScript(...
于 2012-07-16T05:47:17.447 に答える