Garder 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 - 17 mai 2006 à 10:58
diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006 - 20 mai 2006 à 11:25
Bonjour


Je fais une application web en asp.net vb.net et j'ai un datagrid avec un scrollbar et j'aimerai que lors du clic sur un hyperlink contenu dans le datagrid la position du scroll soie garder. Pour l'instant j'ai une petite fonction java script que j'ai trouvé sur le web, elle marche mais seulement quand je clic sur d'autre élement que l'hyperlink.


voici mon code en espérant que vous pourrez m'aider:

Fonction JAVAscript trouvé sur le web




   <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>

Code de création du scrollbar du datagrid:

Code de l'hyperlink:

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

un peu le bordel je sais mais je débute
<?xml:namespace prefix = asp /?> " text="<%# DataBinder.Eval(Container, "DataItem.No Article Fabricant") %>" runat="server">

11 réponses

diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006
17 mai 2006 à 11:03
juste un petit oubli

le hidden qui permet de stocké la position 

 
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 13:15
Bonjour,

Tu peux aussi utiliser la propriété de directive de page MaintainScrollPositionOnPostBack="true"

une directive de page c'est :
<% @ Page ... %>

<hr />Cyril - MVS - MCP
0
diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006
18 mai 2006 à 09:00
J'ai essayer ta solution mais cela me cause une erreur c'est peut être moi qui ai pas bien compris ou il fallait le mettre alors voila ce que j'ai mis:


<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Fabricant.aspx.vb" Inherits="ImportExport.WebForm" maintainScrollPositionOnPostBack="True"%>

et ca me retourne :L'attribut 'maintainScrollPositionOnPostBack' n'est pas pris en charge par la directive 'page'
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 mai 2006 à 09:09
Si tu travailles pas en .net2 c'est un autre attribut qu'il faut mettre, mais je me souviens plus :s

<hr />Cyril - MVS - MCP
0

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

Posez votre question
diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006
18 mai 2006 à 09:35
:'(
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 mai 2006 à 09:47
une simple recherche t'aurais donné la réponse ...

http://www.aspfr.com/infomsg_SCROLL-DATAGRID-REPOSITIONNEMENT_419003.aspx#2 

smartNavigation à True

<hr />Cyril - MVS - MCP
0
diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006
18 mai 2006 à 12:22
Oui si je met smartnavigation ca garde la position de la page mais mon but est de garder la position du scrollbar du <div c'est a dire du datagrid qui est dedant
0
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
18 mai 2006 à 16:09
Bonjour,
J'utilise le même type de code pour un datalist. Ca marche impeccable. Par contre je n'ai pas mis les 2 derniers onload et onunload, ni le onclick sur le car à mon sens le onscroll suffit.
Par contre je ne comprends pas ce que tu recherches avec l'hyperlink et le scroll. Si tu te diriges vers une autre page alors ton datagrid n'est plus là. Quel fonctionnement souhaites-tu exactement ? Cherches-tu à garder la position en mémoire afin de se retrouver au bon endroit lors d'un prochain chargement ?
0
diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006
19 mai 2006 à 12:19
Tu vas surement me prendre pour un débutant et tu aurais bien raison mais en fait mon hyperlink me renvoi sur la meme page mais affiche le détail des articles juste en dessou mais je pense que c'est ca mon erreur la redirection sur la meme page dois supprimer le renvoi de la position du scroll. Il y a un autre moyen pour renvoyer les paramètres ? oui je sais question débile lol
0
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
19 mai 2006 à 14:50
Bonjour,
Je me garderais bien de juger car je suis moi aussi un débutant ! Et tu avais repéré à juste titre la difficulté pour garder la bonne position su scroll (pour info j'ai d'ailleurs recopié ton code car le mien, très proche, passait par les cookies; par contre j'ai perdu du temps car en fait il y a une modif à faire si tu es dans une master page) .
L'hyperlink sur la même page ne me semble pas une grande idée...  
Dans mon cas par exemple, j'ai un datalist avec des photos en vignettes. En cliquant sur une des vignettes j'affiche la photo en grand en récupérant l'url de la photo sélectionnée. C'est certainement proche de ce que tu veux faire en passant des paramètres pour les exploiter ailleurs dans la page.
La solution : 
- ajouter un bouton 
- taper select dans command name dans sa fenêtre de propriétés. Celà le transforme en bouton de commande.
- mettre le code nécessaire sur l'évènement selectedindexchanged
exemple:Protected

Sub DataList1_SelectedIndexChanged(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles DataList1.SelectedIndexChanged

Dim ImgBtn
As
New ImageButtonImgBtn = DataList1.SelectedItem.FindControl(

"ImageButton1")
ImgBtnZoom.ImageUrl = ImgBtn.ImageUrl

End
SubSi tu oublies de mettre le bouton en select, et si tu mets le code sur le click, alors ça ne marche pas car le changement d'index n'est pas repéré et tu ne sais donc pas où tu as cliqué...

Ca c'est une possibilité mais tu peux aussi, en mettant à nouveau un sélect, créer un formview ou un detailsview, ce qui est mieux si tu as un ensemble de détails à afficher sur un article. Il y a de nombreux exemples d'affichages maitre/details, souvent basés sur un gridview, ou un ddl maitre. Mais c'est exactement pareil:
- penser à créer le select, sinon c'est rapé
- penser à affected le datakeyfield (du type IdArticle dans ton cas)
- si tu as les détails de ton article dans une seconde table, créer le sqldatasource ou l'objectdatasource en question pour faire le tri sur l'IdArticle sélectionné
- et surtout en configurant cette source de données lui mettre le l'IdArticle de ton datagrid comme source de données.

Aucun code à saisir.

Pour finir et revenir sur le smartnavigation j'ai repéré que le plus grand avantage est qu'il élimine l'effet de flash de rafraichissement en cliquant sur des éléments, ce qui représentate un réel plus en terme de navigation. Par contre je crois que ça marche surtout avec IE...
A ce propos petite question : cette routine pour repérer le scroll fonctionne sous IE6. Cependant le onscroll est souligné dans mon code, et visual studio me dit que le onscroll n'est pas un élément de div et ne fonctionne pas sous IE6. Pourtant ça fonctione... As-tu des infos là dessus?
Merci

 
0
diablot2 Messages postés 20 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 20 mai 2006
20 mai 2006 à 11:25
Je vais tester ta solution lundi pour voir se que ca donne merci de ces explications je te tiendrais au courrant. Et pour ta petite question moi mon on scroll n'est pas souligné lol ce qui est bizarre mais tan que ca marche c'est le principal lol
0
Rejoignez-nous