2009-10-22 9 views
0

J'ai un panneau de mise à jour à l'intérieur duquel j'ai datalist.Ajax mise à jour de la barre de défilement du panneau numéro

Ce panneau de mise à jour se déclenche toutes les secondes pour extraire les données de DB.

J'ai conservé ce panneau de mise à jour à l'intérieur d'une balise div activée par défilement vertical. Mais quand j'obtiens de nouvelles données, la barre de défilement ne s'ajuste pas automatiquement !!!

J'ai essayé l'option maintaincrollback mais cela ne fonctionne pas.

Y at-il une option pour maintenir la barre de défilement à sa position d'origine après le déclenchement du panneau de mise à jour?

Répondre

1

Voici ce que je préfère éviter JavaScript, qui doit régler la position de défilement chaque rafraîchissement/mise à jour ...

Je suppose que vous devez avoir créé la page comme ci-dessous

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional/Always"> 
    <ContentTemplate> 
     <div style="height: 400px/300px; overflow-y:scroll;"> 
      <asp:DataList ID="DataList1" runat="server"> 
       .... 
      </asp:DataList> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

changement à quelque chose comme cela devrait prendre soin de problème de défilement

<div style="height: 400px/300px; overflow-y:scroll;"> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional/Always"> 
     <ContentTemplate> 
       <asp:DataList ID="DataList1" runat="server"> 
        .... 
       </asp:DataList> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 
+0

dans ce cas, la barre de défilement ne s'ajuste pas au nouvel enregistrement ajouté @ le bas. – solairaja

2

S'il vous plaît essayez ceci:

<script> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_beginRequest(function(){ 
    window.dTop = document.getElementById('divIdHere').scrollTop; 
    }); 

    prm.add_endRequest(function(){ 
     setTimeout(function(){ 
     document.getElementById('divIdHere').scrollTop = window.dTop; 
     },100); 
    }); 
</script> 
+0

merci;) pour mon cas, je n'ai pas besoin de setTimeout. –

Questions connexes