2012-06-13 69 views
0

我有一个网页上的多个UpdatePanels,其中一个内部UserControl(紫色ColorBox如图中所示)和其他内部主页面。当主页的寻呼用户控制(< 1 2 3 >)被调用时,它显示'最新消息'部分对应的UpdateProgress,但也显示'订阅'用户控制的UpdatePanelAnimationExtender多个UpdatePanel回发触发updateprogress其他UpdatePanel动画

我使用UpdatePanelAnimationExtender进行用户控制,UpdateProgress用于主页上的Latest-New。

我试图改变属性,但它一直在来;如果我为用户控制保留UpdateMode="Conditional",则进度条进入循环并持续显示。

屏幕截图Update Panel

我如何修改这个代码只显示相应的进度条。我看了过去几天的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 --> 

用户控制网页代码

<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> 

其他信息:ASP.Net 4.0,C#&寻呼控制是使用LinkBut​​ton的寻呼

回答

0

我试过很多解决方案用户的控制,但他们中没有一个以正确的方式工作。最后我决定跟UpdateProgress更换用户控制的UpdatePanelAnimationExtender,因为我是能够捕获发起的UpdatePanel为AsyPostback

出于某种原因,我没能捕获AsyPostback当我用UpdatePanelAnimationExtender

这种方法可以用于多个更新组中的一种需要来捕获后背部

BELOW发起控制是工作CODE

// 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>