2012-06-28 2 views
0

У меня есть страница asp.net с тремя обновляющими панелями ajax. в каждой панели есть некоторые элементы управления и каждая обновленная панель в качестве контроля прогресса обновления ajax. у первой панели обновления есть раскрывающееся меню, которое имеет автоповтор = true. второй и третий обновляемые панели имеют это раскрывающееся меню как триггер asynpostback. Когда я изменяю выделение в раскрывающемся списке, появляется только первый файл загрузки updateprogress, в то время как другие не отображаются.multiple ajax updateprogress не работает

Как это исправить?

ответ

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 & Прогресс бар я ловушку источник для ascy постбэка & соответственно скрыть или показать Прогресс бар. Надеюсь, это поможет .. Но вам, возможно, придется поработать над этим

+0

Я сделал то же самое. updateprogress отображается для панели обновления, которая вызвала asynpostback или она отображается для всех обновляемых панелей обновления, которые обновляются? – DotnetSparrow

+0

У меня была такая же проблема с несколькими обновлениями, что я сделал, я заманиваю источник обратной передачи и скрываю и показываю индикатор выполнения для конкретных панелей. Я добавлю код, специфичный для моей логики, вы можете реализовать ту же логику с некоторой модификацией. – Learning

+0

Спасибо, с нетерпением жду :) – DotnetSparrow

Смежные вопросы