Empêcher le défilement des pages après la publication
Je suis en train de travailler avec l'addition de l'utilisateur notes en fonction de leurs chèques dans une CheckBoxList. Chaque fois qu'un utilisateur coche une case, une valeur, X
, est ajouté à la note globale. Lorsqu'un utilisateur décoche une case, une valeur, X
, est déduite de la note globale. Pas de problèmes ici.
Le problème que je rencontre est que l'utilisation de la AutoPostback option dans le CheckBoxList propriétés forces de la page à charger de nouveau vers le haut au lieu de rester où l'utilisateur a été situé, ce qui signifie qu'elles doivent continuer à faire défiler vers le bas après chaque cocher/décocher. Est-il un moyen pour éviter cela?
OriginalL'auteur Kruug | 2012-04-13
Vous devez vous connecter pour publier un commentaire.
Solution Ajax
Bien sûr, le meilleur moyen est d'utiliser un appel Ajax. La page n'est pas déplacé du tout, et les données sont juste mis à jour. L'updatepanel est une solution rapide et facile pour commencer - pas une solution optimale, mais si vous avez une page simple, c'est un très bon produit.
Deuxième solution
Une deuxième solution est d'utiliser l'ancre #. Vous définissez le point sur lequel vous le souhaitez qu'il s'affiche:
Et que vous appelez la page à l'aide de ce point d'ancrage comme
page.aspx#PointA
.Troisième solution
Une troisième solution est d'utiliser le code JavaScript de l'intérieur ASP.NET. Sur la page
<%@ Page MaintainScrollPositionOnPostback="true" %>
.Ou sur le web.config pour affecter toutes les pages,
<pages maintainScrollPositionOnPostBack="true" />
.Ou par programmation
System.Web.UI.Page.MaintainScrollPositionOnPostBack = true;
pour l'ouvrir et le fermer par la demande.À l'aide de jQuery
Avec seulement deux lignes de code jQuery vous pouvez faire une belle animation sur le point de vous déplacer après le post de retour:
Et vous déplacez la page de cet élément:
De recherche de Google
Et enfin, vous pouvez utiliser du code JavaScript personnalisé à faire de même. Il existe de nombreux exemples sur Internet: https://www.google.com/?q=asp.net+rester+position
Quant à la solution 3d (built-in asp.net), où dois-je mettre cette ligne exactement à l'intérieur du web.fichier de config? Je n'arrive pas à trouver le bon endroit pour le faire fonctionner. Dois-je SEULEMENT que la ligne de configuration web, ou de l'autre de la ligne sur la page elle-même ET l'autre dans le web.config?
Le web.la config est un mondial, si vous le placez là, puis c'est comme pour l'ajouter sur toutes les pages. Vous pouvez commencer par faire des test par l'ajouter à une page et de le faire fonctionner.
J'ai compris pourquoi il ne fonctionne pas: ma page jamais scrols, c'est un disjoncteur à l'intérieur de la page qui défile. Je vais devoir utiliser du javascript, je suppose.
OriginalL'auteur Aristos
Les deux meilleurs moyens d'Éviter de faire défiler la Page après la Publication sont:
Mettez-le en web.config .
1)
pages maintainScrollPositionOnPostBack="true"
Beaucoup de Gens de remettre en question où est l'endroit exact pour mettre cette ligne.
Donc l'Endroit Exact pour mettre cette ligne est
2) La deuxième façon de réaliser cela est de mettre cette Ligne en haut de Fichier aspx
MaintainScrollPositionOnPostback=true
Comme Ce
OriginalL'auteur Malik
Il y a trois façons possibles que je peux penser:
Sur la Page dans laquelle le rouleau doit être désactivé, définissez l'attribut
MaintainScrollPositionOnPostback
dans la Page ("<%@ Page ....>") de la directive à vrai dire<%@ Page MaintainScrollPositionOnPostback=true ...other settings... >
doit apparaître sur le haut de la page aspxPour toutes les pages du site web, ajoutez la ligne suivante dans le web.config:
<pages MaintainScrollPositionOnPostback=true>
Intégrer les Requêtes AJAX
OriginalL'auteur John
Lorsque vous souhaitez arrêter le défilement de page et rafraîchissante MaintainScrollPositionOnPostback="true" balise est la chose la plus importante.
OriginalL'auteur thisal selaka
Balises HTML peuvent être référencées par programmation .NET grâce à la runat tag.
Simplement donner à la balise body un runat="server" dans le HTML et d'un id="corps" ou ce que vous voulez de référence comme dans le code (je vais utiliser
body
pour l'exemple).Ensuite vous pourrez ajouter/modifier les attributs de la balise dans le code comme ceci:
Mettre le code au chargement de la page.
OriginalL'auteur Devendra Patel
Mettre cette ligne dans le webconfig fichier:
OriginalL'auteur Firoz Khan