Problème de barre de défilement du panneau de mise à jour Ajax
-
05-07-2019 - |
Question
J'ai un panneau de mise à jour dans lequel j'ai un datalist.
Ce panneau de mise à jour se déclenche toutes les secondes pour récupérer les données de la base de données.
J'ai conservé ce panneau de mise à jour dans une balise div activée pour le défilement vertical.
Mais lorsque j'obtiens de nouvelles données, la barre de défilement ne s'ajuste pas automatiquement !!!
J'ai essayé l'option de maintenancecrollback mais cela ne fonctionne pas.
Existe-t-il une option permettant de conserver la barre de défilement à sa position d'origine après le déclenchement du updatepanel?
La solution
Voici ce que je préfère éviter JavaScript, qui doit ajuster la position du défilement à chaque actualisation / mise à jour ...
Je suppose que vous devez avoir conçu une 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>
Le changer en quelque chose comme ceci devrait s'occuper du 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>
Autres conseils
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>