2009-06-15 6 views
4

Lorsque j'attribue l'AssociatedUpdatePanelId, la progression ne s'affiche pas lorsque je sélectionne un état, mais lorsque je le laisse vide, il affiche la progression.Pourquoi Update Update ne se déclenche-t-il pas lorsque AssociatedUpdatePanelId est défini?

Voici le balisage ASPX:

<div> 
    <asp:ListBox ID="lstStates" runat="server" AutoPostBack="True" 
    OnSelectedIndexChanged="lstStates_SelectedIndexChanged" SelectionMode="Multiple"> 
    </asp:ListBox> 
</div> 
<div> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
    <asp:Panel ID="pnlCounty" runat="server"> 
    <asp:ListBox ID="lstCounties" runat="server" SelectionMode="Multiple"> 
    </asp:ListBox> 
    </asp:Panel> 
    </ContentTemplate> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="lstStates" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    </asp:UpdatePanel> 
    <asp:UpdateProgress ID="UpdateProgress2" runat="server" DisplayAfter="1" 
         AssociatedUpdatePanelID="UpdatePanel1"> 
    <ProgressTemplate> 
    <img src="../images/loader2.gif" /> 
    Loading Counties... 
    </ProgressTemplate> 
    </asp:UpdateProgress> 
</div> 

Répondre

10

Selon this article, les déclencheurs externes pour un UpdatePanel ne se déclenchent pas un UpdateProgress associé, depuis la mise en œuvre permettant le contrôle UpdateProgress recherche dans la hiérarchie de contrôle pour le contrôle d'appel; un déclencheur externe ne sera pas présent dans la hiérarchie de contrôle.

L'article suggère cependant d'injecter du JavaScript pour compenser cette erreur; Je l'ai modifié pour (nous l'espérons) répondre à vos besoins:

<script type="text/JavaScript" language="JavaScript"> 
    function pageLoad() 
    {  
     var manager = Sys.WebForms.PageRequestManager.getInstance(); 
     manager.add_endRequest(endRequest); 
     manager.add_beginRequest(OnBeginRequest); 
    } 
    function OnBeginRequest(sender, args) 
    { 
     var postBackElement = args.get_postBackElement(); 
     if (postBackElement.id == 'lstStates') 
     { 
    $get('UpdateProgress2').style.display = "block"; 
     } 
    } 
</script>