2010-04-03 5 views
4

J'ai deux UpdatePanels à l'intérieur d'un contrôle d'accordéon, disposés comme celui-ci:UpdatePanel rafraichit une seule fois

<accordion> 
    <first pane content> 
     <updatepanel UpdateMode="conditional"> 
     <contenttemplate>...</contenttemplate> 
     <triggers>...</triggers> 
     </updatepanel> 
    </first pane content> 

    <second pane content> 
     <updatepanel> 
      <contenttemplate>...</contenttemplate> 
      <triggers>...</triggers> 
     </updatepanel> 
    </second pane content> 

</accordion> 

Le groupe met à jour une fois, mais après cela, aucune mise à jour ait lieu. Si je rafraîchis la page, alors je peux voir les informations mises à jour. Cela signifie que la base de données est en cours de mise à jour, mais le panneau de mise à jour n'est pas actualisé (après l'actualisation la première fois). Pourquoi cela arrive-t-il?

Cela m'a embêté pendant des jours, donc tout conseil serait très apprécié. Merci!

mise à jour

Le problème semble résider quand je l'appelle ceci:

Sys.require(Sys.components.accordion, function() { 
        $("#acca_profile").accordion({ 
         HeaderCssClass: "acc_header", 
         HeaderSelectedCssClass: "acc_selectedheader", 
         FadeTransitions: true, 
         suppressHeaderPostbacks: true, 
         requireOpenedPane: false 
        }); 



       }); 

dans la fonction endRequestHandler. Cependant, si je ne l'appelle pas, alors la div qui devrait être convertie en accordéon n'est plus un accordéon.

Mise à jour 2

Après un peu plus de travail, je me suis le problème réside peut-être dans le fait que le Jquery ne reconsolidation les événements postérieurs à la postback partielle. Beaucoup de solutions prétendre que vous devez enregistrer le script client, mais je dois ce en haut de ma page ASPX:

<asp:ScriptManager runat="server" EnablePageMethods="true"> 
<Scripts> 

... (autre script) Path = "http: // ajax. googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js »/>

</Scripts> 
</asp:ScriptManager> 

Comment puis-je rebind les événements JQuery dans mon code?

+0

Je voudrais voir plus de code pour aider –

+0

Avez-vous vérifié si vous obtenez des erreurs de javascript? Vous pouvez utiliser firebug ou tout ce que vous voulez faire. –

+0

Ah, j'ai trouvé que l'erreur semble être dans une fonction appelée dans la section endRequestHandler. À l'heure actuelle, lorsque le panneau de mise à jour est actualisé, l'accordéon disparaît (c'est-à-dire que le javascript utilisé pour convertir un div en accordéon n'est plus exécuté). J'ai essayé de l'exécuter dans endRequestHandler, et bien que cela fonctionne, le rafraîchissement s'arrête. J'ai mis à jour mon message avec le code de l'accordéon. merci – XSL

Répondre

1

Enfin, je pense que je l'ai résolu! Des heures dans les égouts pour quelques lignes de code. N'est-ce pas toujours le chemin? : D Pour les personnes qui viennent sur ce fil, j'ai ajouté:

Sys.Application.add_init(pLoad); 

J'ai ensuite créé une fonction appelée pLoad qui contenait le mon javascript accordéon (en post original), ainsi que deux autres fonctions. Jusqu'ici les choses semblent fonctionner ...

Questions connexes