[英]multiple ajax updateprogress not working
I have an asp.net page with three ajax updatepanels. 我有一个带有三个ajax updatepanels的asp.net页面。 in each panel there are some controls and each updatepanel as an ajax update progress control. 每个面板中都有一些控件,每个updatepanel作为ajax更新进度控件。 first updatepanel has a dropdown which has autopostback = true. 第一个updatepanel有一个下拉列表,其中的autopostback = true。 second and third updatepanels has this dropdown as asynpostback trigger. 第二个和第三个updatepanels具有此下拉菜单作为asynpostback触发器。 When I change selection in dropdown, only first updateprogress loading image appears while others don't appear. 当我在下拉菜单中更改选择时,仅显示第一个updateprogress加载图像,而其他不显示。
How can I fix it ? 我该如何解决?
Try to change the UpdateMode="Conditional"
in Update panel. 尝试在UpdateMode="Conditional"
更新”面板中更改UpdateMode="Conditional"
。
Example 例
<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>
I have other user controls with UpdatePanel & Progress bar i trap the source for ascy postback & accordingly hide or show the Progress bar. 我还有其他带有UpdatePanel和进度栏的用户控件,我可以捕获ascy回发的源并相应地隐藏或显示进度栏。 Hope this will be of help.. But you may need to work on it 希望对您有所帮助。但是您可能需要进行一些工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.