2012-06-12 4 views
0

Я работаю над веб-формой, которая имеет два UpdatePanels; один внутри UserControl и другие внутри главной страницы. Когда вызывается пользовательское управление пейджером (< 1 2 3 >) главной страницы, оно показывает соответствующий UpdateProgress раздела «Последние новости», а также показывает панель выполнения «Подписки».UpdatePanel запускает UpdateProgress другого usercontrol также в asp.net webform

Я попытался изменить свойства, но он продолжает наступать; если я сохраню UpdateMode="Conditional" для пользовательского контроля, то индикатор выполнения переходит в цикл и отображается непрерывно.

Как я могу внести изменения в этот код, чтобы показать только соответствующий индикатор выполнения. Я просмотрел более 50 примеров, но монахиня, похоже, подходит. Я был бы признателен, если кто-то может помочь мне исправить это.

<!-- LatestNewArea --> 
    <div class="LatestNewArea"> 
     <asp:UpdatePanel ID="updLatestNews" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:Repeater ID="rptLatestNews" runat="server" EnableViewState="False" onitemdatabound="rptLatestNews_ItemDataBound"> 
       <ItemTemplate> 
       <asp:HyperLink ID="hylLatestNews" CssClass="chylLatestNews" runat="server" NavigateUrl=''> 
        <div class="LatestNewsWrapper"> 
         <div class="LatestNewsDateBox"> 
          <div class="LNYYYY"> 
           <asp:Label ID="lblYYYY" runat="server" Text="2012"></asp:Label> 
          </div> 
          <div class="LNDDMM"> 
           <asp:Label ID="lblDDMM" runat="server" Text="12/08"></asp:Label> 
          </div> 
         </div> 
         <div class="LatestNewsTitle"> 
          <asp:Label ID="lblLatestNewsTitle" runat="server" Text="First News for the Website"></asp:Label> 
         </div> 
         <div class="LatestNewsHDate"> 
          <asp:Label ID="Label1" runat="server" Text="Hijri: 15 Rajab 1433"></asp:Label> 
         </div> 
         <div class="LatestNewsDesc"> 
          <asp:Label ID="Label2" runat="server" Text=""></asp:Label> 
         </div> 
        </div> 
        <div class="LNHLine"> </div> 
       </asp:HyperLink> 
      </ItemTemplate> 
     </asp:Repeater> 
     <!-- Pager --> 
     <div class="LatestNewsPagerWrapper"> 
     <div class="LatestNewsPagerInnerWrapper"> 
      <asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="50" AssociatedUpdatePanelID="updLatestNews" > 
       <ProgressTemplate> 
       <div id="imgLoadingArticleList" class="imgLoadingArticleList"> 
        <asp:Image ID="imgLoading" runat="server" ImageUrl="~/images/ajax-loader-bar2.gif" /> 
       </div> 
       </ProgressTemplate> 
      </asp:UpdateProgress> 
      <uc1:PagerControl ID="PagerControl1" runat="server" CssClass="gold-pager" PageMode="LinkButton" /> 
     </div> 
     </div> 
     <!-- Pager --> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
    </div> 
    <!-- LatestNewArea --> 

код пользователя управления Page

<script type="text/javascript"> 

     function onUpdating() { 
      // get the divImage 
      var panelProg = $get('divImage'); 
      // set it to visible 
      panelProg.style.display = ''; 

      // hide label if visible  
      var lbl = $get('<%= this.pnlSubscribe.ClientID %>'); 
      lbl.innerHTML = ''; 
     } 

     function onUpdated() { 
      // get the divImage 
      var panelProg = $get('divImage'); 
      // set it to invisible 
      panelProg.style.display = 'none'; 
     } 

    </script> 

<table cellpadding="0" cellspacing="0" class="SubscribeContainer"> 
    <tr> 
     <td align="center"> 
      <table cellpadding="0" cellspacing="0" class="SubscribeWrapper" border="0"> 
       <tr> 
        <td valign="top"> 
        <asp:UpdatePanel ID="updSubscribe" runat="server" > 
         <ContentTemplate> 
           <asp:Panel ID="pnlSubscribe" runat="server" Height="10px"> 
            <div class="SubHeading"><asp:Label ID="lblTitle" runat="server" Text="JOIN US"></asp:Label></div> 
            <div class="dSubName"> 
             <asp:TextBox ID="txtName" CssClass="txtSubscribe" runat="server" Text="NAME" onfocus="if(this.value=='NAME')this.value='';" onblur="if(this.value=='')this.value='NAME';"></asp:TextBox> 
            </div> 
            <div class="dSubEmail"> 
             <asp:TextBox ID="txtEmail" CssClass="txtSubscribe" runat="server" Text="YOUR EMAIL" onfocus="if(this.value=='YOUR EMAIL')this.value='';" onblur="if(this.value=='')this.value='YOUR EMAIL';"></asp:TextBox> 
             <asp:RequiredFieldValidator ID="rfvEmailSub" runat="server" ErrorMessage="*" 
              ControlToValidate="txtEmail" ValidationGroup="SubEmail" ></asp:RequiredFieldValidator> 
             <asp:RegularExpressionValidator ID="revEmailSub" runat="server" 
              ErrorMessage="*" ControlToValidate="txtEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
              ValidationGroup="SubEmail" ></asp:RegularExpressionValidator> 
            </div> 
            <div class="dSubSubmit"> 
             <asp:Button ID="btnSubscribe" CssClass="btnSubscribe" runat="server" ValidationGroup="SubEmail" Text="Subscribe" onclick="btnSubscribe_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/loader-sub.png" Visible="true"/> 
              </div> 

         </ContentTemplate> 
        </asp:UpdatePanel> 

        <asp:UpdatePanelAnimationExtender ID="UpdatePanelAnimationExtender1" TargetControlID="updSubscribe" runat="server"> 
        <Animations> 
         <OnUpdating> 
          <Parallel duration="0"> 
           <ScriptAction Script="onUpdating();" /> 

           <EnableAction AnimationTarget="btnSubscribe" Enabled="false" />      
          </Parallel> 
         </OnUpdating> 
         <OnUpdated> 
          <Parallel duration="0"> 
           <ScriptAction Script="onUpdated();" /> 
           <EnableAction AnimationTarget="btnSubscribe" Enabled="true" /> 
          </Parallel> 
         </OnUpdated> 
        </Animations> 
        </asp:UpdatePanelAnimationExtender> 


         </td> 
        </tr> 
       </table> 
      </td> 
     </tr> 
    </table> 

ответ

0

Я попробовал много решения, но не из них работал должным образом. Наконец я решил заменить UpdatePanelAnimationExtender контроля пользователя с UpdateProgress, как я был в состоянии поймать инициирующий UpdatePanel для AsyPostback

По какой-то причине я не смог поймать AsyPostback, когда я использовал UpdatePanelAnimationExtender

НИЖЕ ТАКОЙ КОД РАБОЧЕГО

// 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.pnlSubscribe.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 = '<%= btnSubscribe.ClientID %>'; 
      if (cmdAuthoriseButton == args._postBackElement.id) { 
       // Show UpdateProgress for subscribe 
       onUpdateOfSubscribe(); 
      } 
     } 
    </script> 

<table cellpadding="0" cellspacing="0" class="SubscribeContainer"> 
     <tr> 
      <td align="center"> 
       <table cellpadding="0" cellspacing="0" class="SubscribeWrapper" border="0" > 
        <tr> 
         <td valign="top"> 
         <asp:UpdatePanel ID="updSubscribe" runat="server" UpdateMode="Conditional" > 
          <ContentTemplate> 
            <asp:Panel ID="pnlSubscribe" runat="server" Height="10px"> 
             <div class="SubHeading"><asp:Label ID="lblTitle" runat="server" Text="JOIN US"></asp:Label></div> 
             <div class="dSubName"> 
              <asp:TextBox ID="txtName" CssClass="txtSubscribe" runat="server" Text="NAME" onfocus="if(this.value=='NAME')this.value='';" onblur="if(this.value=='')this.value='NAME';"></asp:TextBox> 
             </div> 
             <div class="dSubEmail"> 
              <asp:TextBox ID="txtEmail" CssClass="txtSubscribe" runat="server" Text="YOUR EMAIL" onfocus="if(this.value=='YOUR EMAIL')this.value='';" onblur="if(this.value=='')this.value='YOUR EMAIL';"></asp:TextBox> 
              <asp:RequiredFieldValidator ID="rfvEmailSub" runat="server" ErrorMessage="*" 
               ControlToValidate="txtEmail" ValidationGroup="SubEmail" ></asp:RequiredFieldValidator> 
              <asp:RegularExpressionValidator ID="revEmailSub" runat="server" 
               ErrorMessage="*" ControlToValidate="txtEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
               ValidationGroup="SubEmail" ></asp:RegularExpressionValidator> 
             </div> 
             <div class="dSubSubmit"> 
              <asp:Button ID="btnSubscribe" CssClass="btnSubscribe" runat="server" ValidationGroup="SubEmail" Text="Subscribe" onclick="btnSubscribe_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/loader-sub.png" Visible="true"/> 
               </div> 

          </ContentTemplate> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID="btnSubscribe" EventName="Click" /> 
          </Triggers> 
         </asp:UpdatePanel> 
        <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="updSubscribe" > 
         <ProgressTemplate> 

         </ProgressTemplate> 
        </asp:UpdateProgress> 


          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
     </table> 
Смежные вопросы