Pourquoi le panneau de mise à jour effectue-t-il une publication complète pour le contrôle personnalisé?

StackOverflow https://stackoverflow.com/questions/616884

Question

J'ai un contrôle personnalisé assez complexe. Le contrôle personnalisé contient deux panneaux de mise à jour.

J'essaie d'utiliser ce contrôle dans un panneau de mise à jour:

    <asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
     <asp:Button ID="btn1" runat="server" Text="Sample Button" />&nbsp;&nbsp;<asp:Label ID="lblTime" runat="server"></asp:Label>    
     <cc1:MyCustomControl ID="MyCustomControl1" runat="server" >
    </cc1:MyCustomControl>
    </ContentTemplate>
</asp:UpdatePanel>

Lorsque je clique sur le bouton dans le panneau de mise à jour, une publication asynchrone est effectuée et il n'y a pas d'écran "scintillement". Lorsque je clique sur un bouton de mon contrôle personnalisé, la page scintille et effectue un post complet.

À l'intérieur du contrôle personnalisé, certains panneaux de mise à jour tentent de publier des publications complètes (basées sur des déclencheurs).

Comment faire en sorte que UpdatePanel au niveau de la page ne fasse pas une publication complète, peu importe ce qui se passe à l'intérieur du contrôle personnalisé?

Était-ce utile?

La solution 2

Vous avez résolu le problème similaire à celui-ci: Comment puis-je obtenir un UpdatePanel pour intercepter la liste DropDownList d’un CompositeControl

Sauf que mon contrôle à l'origine de la publication était dans un Updatepanel avec un déclencheur complet pour la publication. J'ai pu retirer ce contrôle afin qu'il ne soit pas imbriqué dans les panneaux de mise à jour et que cela le résolve.

Autres conseils

Avez-vous pensé à définir explicitement un asp: AsyncPostBackTrigger avec le contrôle btn1 dans le contrôle up1 UpdatePanel.

<asp:UpdatePanel ID="up1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btn1" EventName="Click" />
    </Triggers>
    <ContentTemplate>     
        <asp:Button ID="btn1" runat="server" Text="Sample Button" />  
        <asp:Label ID="lblTime" runat="server"></asp:Label>         
        <cc1:MyCustomControl ID="MyCustomControl1" runat="server" />                 
    </ContentTemplate>
</asp:UpdatePanel>

Éditer: Comment avez-vous essayé d'appeler explicitement la méthode Update dans l'événement OnClick du bouton pour le panneau de mise à jour? Cela inclut les panneaux de mise à jour incorporés au contrôle personnalisé.

Je voudrais d’abord regarder s’il existe un autre problème avec le contrôle personnalisé causant la publication de page entière, car dans tous les cas, il faudrait que le panneau de mise à jour soit actualisé (toujours avec ajax).

Après cela, il suffit de regarder la section Contrôles d'imbrication UpdatePanel de cette page: http://msdn.microsoft.com/en-us/library/bb398867 .aspx #

Assurez-vous également que le contrôle ScriptManager avec la propriété EnablePartialRendering est défini sur true.

Sur UpdatePanel, définissez la propriété ChildrenAsTriggers = "true" . Ceci indique à UpdatePanel d'intercepter toutes les invocations PostBack en provenance de l'intérieur de UpdatePanel.

Vous pouvez également explorer la propriété UpdateMode , qui détermine quels types d'événements déclenchent une mise à jour. (Par défaut, un UpdatePanel s'actualisera si un autre panneau de l'écran est actualisé. Cela m'a jeté pendant un certain temps jusqu'à ce que je réalise ce qui se passait.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top