多个ajax updateprogress无法正常工作

时间:2012-06-28 12:25:26

标签: c# asp.net ajax

我有一个带有三个ajax updatepanel的asp.net页面。在每个面板中有一些控件和每个updatepanel作为ajax更新进度控件。第一个updatepanel有一个下拉列表,其中包含autopostback = true。第二个和第三个updatepanels将此下拉列表作为asynpostback触发器。当我在下拉列表中更改选择时,仅显示第一个updateprogress加载图像,而其他图像不会出现。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

尝试更改“更新”面板中的UpdateMode="Conditional"

实施例

<script type="text/javascript">

        // Function to hide control on update
        function onUpdateOfSubscribe() {
            var panelProg = $get('divImage');
            // set it to visible
            panelProg.style.display = '';
            // hide label if visible      
            var lbl = $get('<%= this.pnlRegister.ClientID %>');
            lbl.innerHTML = '';
        }
        //Code to track the initiating event so to associate updateprogress
        var currentPostBackElement;
        function pageLoad() {
            var manager = Sys.WebForms.PageRequestManager.getInstance();
            manager.add_initializeRequest(OnInitializeRequest);
        }
        //On OnInitializeRequest
        function OnInitializeRequest(sender, args) {
            var manager = Sys.WebForms.PageRequestManager.getInstance();
            currentPostBackElement = args.get_postBackElement().parentElement;

            var cmdAuthoriseButton = '<%= btnRegister.ClientID %>';
            if (cmdAuthoriseButton == args._postBackElement.id) {
                // Show UpdateProgress for subscribe 
                onUpdateOfSubscribe();
            }
        }
</script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div class="FormWrapper">
        <div class="rowHeader">

        </div>
            <asp:UpdatePanel ID="updRegister" runat="server" UpdateMode="Conditional"   >
            <ContentTemplate>  
                    <asp:Panel ID="pnlRegister" runat="server" Height="10px">
                        <div class="row" style="display:none;">
                            <asp:Label ID="Label7" runat="server" Text="Activity:" class="lbl"></asp:Label>
                            <asp:DropDownList ID="ddActivities" runat="server" CssClass="dd252"  DataTextField="EventTitle" DataValueField="EventID">
                            </asp:DropDownList>
                        </div>
                        <div class="row">
                            <asp:Label ID="lblSName" runat="server" Text="Name:" class="lbl"></asp:Label>
                            <asp:TextBox ID="txtSName" runat="server" CssClass="txt"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator2"  runat="server" ErrorMessage="*" ControlToValidate="txtSName" ValidationGroup="ActivityReg" ></asp:RequiredFieldValidator>
                        </div>
                        <div class="row">
                            <asp:Label ID="lblSAge" runat="server" Text="Age:" class="lbl"></asp:Label>
                            <asp:TextBox ID="txtSAge" runat="server" CssClass="txt"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator4"  runat="server" ErrorMessage="*" ControlToValidate="txtSAge" ValidationGroup="ActivityReg" ></asp:RequiredFieldValidator>
                            <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtSAge" MaximumValue="100" MinimumValue="4" 
                                ValidationGroup="ActivityReg" Type="Integer" ></asp:RangeValidator>
                        </div>

                        <div class="row">
                            <asp:Label ID="lblGMobile" runat="server" Text="Guardian Mobile:" class="lbl"></asp:Label>
                            <asp:TextBox ID="txtGMobile" runat="server" CssClass="txt"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator5"  runat="server" ErrorMessage="*" ControlToValidate="txtGMobile" ValidationGroup="ActivityReg" ></asp:RequiredFieldValidator>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1"  runat="server" ErrorMessage="*" ControlToValidate="txtGMobile" ValidationGroup="ActivityReg" ></asp:RequiredFieldValidator><asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server"  ValidationGroup="ActivityReg"
                                ControlToValidate="txtGMobile" ErrorMessage="*" ValidationExpression="[0-9 ]{9,}"></asp:RegularExpressionValidator>
                        </div>
                        <div class="rowDouble">
                            <asp:Label ID="lblAddress" runat="server" Text="Address:" class="lbl"></asp:Label>
                            <asp:TextBox ID="txtAddress" runat="server" CssClass="txtDouble" TextMode="MultiLine"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator3"  runat="server" ErrorMessage="*" ControlToValidate="txtAddress" ValidationGroup="ActivityReg" ></asp:RequiredFieldValidator>   
                        </div>
                        <div class="row">
                            <asp:Button ID="btnRegister" CssClass="btn" runat="server" 
                                ValidationGroup="ActivityReg" Text="Register" onclick="btnRegister_Click"  />
                        </div>
                        </asp:Panel> 
                    <div class="dSubMSG"> 
                        <asp:Label ID="lblMSG" runat="server" Text=""></asp:Label>
                    </div>
                    <div id="divImage" style="display:none" class="dSubAni">
                        <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/ajax-loader-gray.png" Visible="true"/>
                    </div>

                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="btnRegister" EventName="Click" />
                </Triggers>
            </asp:UpdatePanel>
            <asp:UpdateProgress ID="updProgressRegister" runat="server" AssociatedUpdatePanelID="updRegister" >
                <ProgressTemplate>

                </ProgressTemplate>
            </asp:UpdateProgress>
    </div>
    </form>

我有其他用户控件使用UpdatePanel&amp;进度条我陷入ascy postback&amp;相应地隐藏或显示进度条。希望这会有所帮助。但你可能需要继续努力

相关问题