2009-04-28 9 views
2

J'ai un panneau de mise à jour sur ma page et chaque fois que j'ai un contrôle de publication, la page revient en haut de la page.La page passe au début de la publication de contrôle dans updatepanel

Pourquoi cela se produirait-il? Comment puis-je réparer cela?

+0

J'ai ce même problème, et MaintainScrollPositionOnPostback ne résout pas. L'accent est là où il devrait être; la page défile aussi haut que possible tout en gardant le contrôle ciblé visible. Cela affecte Chrome et Firefox, mais pas IE. Je n'ai pas ce problème quand j'utilise mon propre Ajaxery côté client - seulement avec UpdatePanel. –

Répondre

4

je Control.Focus() côté serveur résolu ce problème. Par exemple:

Protected Sub ddlGroups_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlGroups.SelectedIndexChanged 

     LoadGroups() 

     ddlGroups.Focus() 

End Sub 

Je ne sais pas si c'est le meilleur moyen mais cela fonctionne pour moi en ce moment.

0
+0

J'ai ce MaintainScrollPositionOnPostBack mis à vrai et j'ai toujours le problème. –

+0

<% @ Page Language = "vb" EnableEventValidation = "false" AutoEventWireup = "false" MaintainScrollPositionOnPostback = "true" enableviewstate = "true" Codefile = "xxx.aspx.vb" Inherits = "xxx"%> –

+0

Non, il n'est pas la position de défilement dans le panneau c'est la position de défilement de la page. –

1

Je sais que cette question a déjà été répondue, mais je pense que j'ai une solution plus simple. J'avais besoin d'une solution côté client et cela a très bien fonctionné.

Ce qui m'arrivait était que j'ai chargé une page et ensuite chargé un panneau après chargement de la page principale. Si je fais défiler ma page principale du tout alors quand le panneau a fini de charger, toute ma page ferait défiler vers le haut. Donc, ce code garde trace de tout défilement que je pourrais faire pendant le chargement de mon Panel. Ensuite, une fois que le Panel a fini de charger, au lieu de faire défiler vers le haut, la page défile juste à l'endroit exact où je me trouvais. Jusqu'à présent, cela fonctionne très bien dans IE, Chrome, FF, Opera et Safari

<script type="text/javascript"> 
    var yPos; 
    var prm = Sys.WebForms.PageRequestManager.getInstance();  
    prm.add_endRequest(EndRequestHandler); 
    $(window).scroll(function() { yPos = $(window).scrollTop(); }); 
    function EndRequestHandler(sender, args) {   
     $(window).scrollTop(yPos); 
    } 
</script> 
0

S'il vous plaît essayer de gestionnaires PageRequestManager

<script> 
       Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 



     function EndRequestHandler(sender, args) { 
      try { 

       sender._controlIDToFocus = null; 


      } 
      catch (e) { 
      } 
     } 

</script> 
Questions connexes