Maintenir la position de défilement d'une div dans une page sur la publication
J'ai un div dans une page aspx avec dépassement de la valeur auto. Le contenu de la div sont créées dynamiquement et se compose d'une liste de boutons de lien.
<div id="div1" style="overflow: auto; height: 100%;">
.....
</div>
Quand je scoll dans la div et cliquez sur l'un des boutons de lien, le rechargement de la page perd la position de défilement à l'intérieur de la div et m'emmène en haut de la div. Est-il un moyen pour éviter cela?
Noter que c'est un div à l'intérieur de la page. Page.MaintainScrollPositionOnPostBack()
ne fonctionne pas.
source d'informationauteur Nikhil
Vous devez vous connecter pour publier un commentaire.
Que Jeff S a mentionné une façon de gérer cette situation est à l'aide de javascript pour suivre la position de défilement de la div et chaque fois que le chargement de la page de réinitialisation de la position de défilement à sa valeur précédente.
Voici un exemple de code:
Dans la pratique, je ne mettrais pas le javascript directement dans les éléments, mais ses juste un exemple. Vous pouvez également stocker la position de défilement dans un cookie.
La façon la plus simple est d'envelopper le contrôle dans un UpdatePanel.
Utilisation:
Puisque certaines personnes ne veulent pas utiliser un Updatepanel dans le seul but de sauver la position de défilement... 🙂
Une façon de le faire est de saisir, dans la onscroll cas de la div, les valeurs de la scrollLeft et scrollTop propriétés. Enregistrer ces valeurs dans une zone de texte masquée(es). Sur le post à l'arrière, utilisez les valeurs des zones de texte pour réinitialiser les propriétés.
Ce qui arrive quand les boutons sont pressés? Ce traitement se produit lors de la publication?
Selon les réponses à ces questions, vous pouvez chercher à se débarrasser de la publication au total et effectuer les opérations nécessaires purement côté client.
(Je suis actuellement en train d'effectuer ce type de conversion pour un client.)