Sauvegarder la position du scroll d'un datagrid

diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006 - 16 mai 2006 à 09:25
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010 - 27 juin 2006 à 09:57
Bonjour

je développe une application web en asp.net vb.net et mon problème est que j'ai un datagrid avec un scrollbar et que lors du clic sur un élément de ce dernier le datagrid remonte en haut et moi j'aimerai qu'il garde la position. J'ai trouvé un code sur le web qui marche à moitier car en effet lors du clic sur un autre element la position est garder mais lors du clic de l'hyperlink d'un élement du datagrid celui ci remonte. Donc la question c'est comment puis-je faire pour qu'il ne remonte pas quand je clic sur l'hyperlink? merci de votre aide

Voila la fonction java script que j'ai trouvé :





-- ligne qui permet d'avoir le scroll dans le datagrid



-- ligne hyperlink qui renvoi des paramètres



' NavigateUrl='<%# "Recapitulatif.aspx?idprod=" &amp; DataBinder.eval(Container.DataItem,"[NoArticle]") &amp; "&amp;numliste=" &amp; dlliste.SelectedValue &amp;"&amp SaveDivPosition()"%> '>

7 réponses

mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
16 mai 2006 à 12:27
Bonjour,
Je suis exactement sur le même sujet...
Vu le nom de ta fonction javascript je pense que tu as trouvé ce code sur le blog d'un certain Eric.
Je viens juste de le mettre en place, et ça marche impeccable, sauf que la solution cookie ne me plait pas plus que ça.
Pour ce qui est de ton problème je ne vois pas trop, surtout que je n'y connais rien en javascript ! (est-ce que un oncontrolselect marcherait...).

Ca m'amène d'ailleurs à te retourner une question : dans mon cas je ne cherche pas à garder en mémoire la position du curseur vertical, mais la position d'un curseur horizontal. J'ai transformé le yPos en xPos, sans résultat. Je pense que le scrollTop est en cause, mais n'y connaissant rien je ne sais par quoi le remplacer. As-tu une idée ?
Merci d'avance
0
htmlchef Messages postés 15 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 5 février 2007
18 juin 2006 à 20:07
<%@ Page Language="vb" .... SmartNavigation="true" %>   (en .net1)
<%@ Page Language="vb" ... maintainScrollPositionOnPostBack="True" %> (en .net2)
0
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
19 juin 2006 à 09:47
Merci htmlchef pour ton message, mais le maintainScrollPositionOnPostBack est une directive de Page : elle permet de maintenir la position du curseur de la page seulement.
Le problème de diablot2 est de maintenir la position d'un curseur de Div, dans lequel il a mis un datagrid ou un autre objet. L'astuce consiste alors à créér un hiddenfield par exemple et à y mettre la position du curseur, qui sera récupérée après postback et permettra de repositionner celui-ci.
Pour un curseur vertical on utilisera le scrollTop, et pour un horizontal le scrollLeft.
Bonne journée à tous.
0
htmlchef Messages postés 15 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 5 février 2007
19 juin 2006 à 12:01
Salut Mdemo,tu dois éssayer le SmartNavigation="true", car ça maintien  aussi la position du curseur pour le Div, mais le problème c que ça cohabite pas avec le JavaScript , bonne journée ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
20 juin 2006 à 23:52
Je ne me souvenais pas, mais tu as effectivement raison! Je viens de faire l'essai et ça marche en effet.
Je me suis donc demandé pourquoi il y a quelques semaines j'avais fait cette routine js pour maintenir le scroll, car j'avais fait des essais avec le smartnavigation et le maintainScrollPositionOnPostBack . N'ayant pas de problème de cohabitation avec du js (merci pour cette info que je ne connaissais pas), je pense que mon problème était que cette ça marche avec smartnavigation, mais pas avec maintainScrollPositionOnPostBack  qui est censé le remplacer. Alors comment faire quand on est sous 2.0 ? Peux tu me conseiller là dessus ?  Pourquoi y a t-il une régression entre 1.1 et 2.0 ?
J'ai aussi lu que smartnavigation marche seulement à partir de IE 5.5. N'est-il pas préférable au final d'intégrer ses propres routines?
Merci
0
htmlchef Messages postés 15 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 5 février 2007
21 juin 2006 à 15:07
et pour cela je préfèr utiliser seulement du JavaScript,mem si c pas de la mem efficacité que le SmartNavigation,voila une fonction que j utilise Pour le Div :

<script language="javascript">
        window.onload = function(){
           var strPos = document.getElementById("scrollPosHidden").value;
           document.getElementById("divGrid").scrollTop = strPos;
         }
      function SaveDivPosition(){    
        var intY = document.getElementById("divGrid").scrollTop;      
        document.getElementById("scrollPosHidden").value = intY;
      }
 
  window.onunload = savedivposition();
  window.onload = savedivposition();
        </script>

   

1-on cree une fonction javascript
2-on l'appel chez la Div
3-on cree un INPUT hidden runat=server,champ caché pour k il renvoi la posission du scroll au serveur

stp j ai besoin d une fonction comme celle ci mais pour le scroll de la page
et ça ne doi marché seuf si tu n utilise pas le SmartNavigation

Bonne chance
0
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
27 juin 2006 à 09:57
Bonjour htmlchef,
Désolé pour mon retard pour te répondre.
J'utilise moi aussi exactement le même code javascript pour maintenir les div en position.
Je ne mets pas de smartnavigation, mais par contre j'utilise le maintainscrollpositiononpostback dont la seule utilité est de justement maintenir le scroll de la page seulement.
Si pour une raison que j'ignore tu ne souhaites pas l'utiliser et le gérer toi même en js, je pense qu'il faut que tu regardes du côté de l'objet window pour modifier ton code actuel (qui est basé sur l'objet document). Parmi les méthodes disponibles je ne vois par contre pas de scrolltop... mais il y a ScrollTo(x,y) (fait scroller jusqu'à ce que le point x,y soit en haut à gauche) et ScrollBy(deltaX,deltaY) (fait scroller de deltaX et deltaY). Il semble donc facile de positionner le scroll (du style window.scrollBy(0,intY). Reste à déterminer comment repérer sa position intY car il n'y a semble-t-il pas de scrollTop (ce qui reste à vérifier).
Bon courage, et tiens moi au courant!
0
Rejoignez-nous