IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] Gestion du scrollbar


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Indépendant en informatique
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Indépendant en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut [VB.NET] Gestion du scrollbar
    Hello,

    j'ai un petit souci sur la gestion du scrollbar de mes pages.

    Je voudrais pouvoir récupérer la position du scrollbar de la page active à un moment x. Pour celà j'ai trouvé ce code javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    position = document.body.scrollTop
    et pour refixer la position de ma scrollbar, le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.RegisterStartupScript("scroll", "<script>window.scroll(0, " + position + ")</script>")
    Je viens de faire une semaine de vacances, donc je pense que je suis dans les choux, mais impossible de savoir quel code écrire pour exécuter et récupérer le résultat (position) de ma scrollbar.

    Est-ce que quelqu'un aurait la bonté de m'éclairer!

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Indépendant en informatique
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Indépendant en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut
    j'avais pensé à utiliser un textbox caché et de lui balancer la position de la scrollbar en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Response.write("<script>window.document.forms(0).elements('txtBox').value = window.document.body.scrollTop;</script>")
    Response.End
    et ensuite récupérer le contenu de ma textbox depuis mon code behind. A première vue bonne idée, mais impossible à faire tourner.

    En premier lieu IE me dit que
    window.document.forms(...) est null
    et deuxièment il me dit que
    sur window.document.body.scrollTop : Line 0, Object required
    J'arrive pas à capter ce qui se passe.

    ça fait un jour et demi que je me casse la tête là-dessus, alors si quelqu'un peut m'aider, ce serait vraiment sympa.

    Tout ce que je veux, c'est qu'au rafraîchissement de ma page, la barre de défilement de celle-ci reste là où elle est? Y aura bien quelqu'un qui a du déjà avoir eu ce problème!

    Aidez-moi sivouplait.

    Merci d'avance

  3. #3
    Membre éclairé
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Par défaut
    L'histoire de la scroll bar est un pb effectivement courant. Et donc on en a déjà parlé :
    http://www.developpez.net/forums/vie...ight=ascenseur
    Et aussi dans dans la FAQ.
    Mais moi je te conseille plus tot ça :
    http://www.codeproject.com/aspnet/As...ollbarMove.asp

    Personnellement je l'inclus dans toute mes pages et je ne me pose pas de questions....

  4. #4
    Membre averti
    Profil pro
    Indépendant en informatique
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Indépendant en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut
    ouais, ça à l'air pas mal, mais qu'est-ce que tu fais avec ce fichier.

    Faut-il créer des champs, est-ce qu'elle travaille seule ou faut-il l'appeler et si oui où, et comment l'inclus-tu dans tes pages en tant qu'objet :

    Désolé, mais il y a aucun commentaire précisant celà et vu que je ne suis pas très calé, si tu peux m'aider ce serait cool!

    En tout cas merci pour ton aide.

  5. #5
    Membre éclairé
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Par défaut
    Le lien que je t'ais donné te fourni le code source d'un control Web qui permet de repositonner la scrollbar à son ancienne position après un postback.
    Pour t'en servir il faut que tu créées un projet de type "Class Library" et que tu y ajoutes ce code source. Si tout va bien tu compiles et voilà.
    Ensuite il faut que tu rajoutes ce composant à chacune de tes pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <!--directive Register pour pointer vers ta librairie -->
    <%@ Register TagPrefix="icr" Namespace="ICR.Web.Components" Assembly="ICR.Web.Components" %>
    <!--ajout du composant-->
    <icr:clientscrollbarpos id="scrallBarKeeper" runat="server"></icr:clientscrollbarpos>
    J'ai mis ce code dans le fichier ascx qui me sert de header, il est donc présent dans toute mes pages Web automatiquement !

    Enfin, j'ai renommé l'espace de nom de l'objet "ICR.Web.Components" et l'objet en "ClientScrollbarPos"
    Il faut aussi que tu aies rajouté une référence sur ta dll dans ton projet Web.

    Voilà, si tu débutes ces manipes ne te paraitront pas forcément évidentes.
    Bon courrage.

  6. #6
    Membre averti
    Profil pro
    Indépendant en informatique
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Indépendant en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut
    ok, merci je vais tenter l'expérience.

  7. #7
    Membre averti
    Profil pro
    Indépendant en informatique
    Inscrit en
    Avril 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Indépendant en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 25
    Par défaut
    On m'a aidé à trouver une solution beaucoup plus simple.
    Je vous la transmet au cas où cela vous intéresse.

    Ajouter celà directement dans votre page aspx ou dans un fichier que vous incluez dans le header de votre page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <script language="javascript">		
         function SmartScroller_GetCoords()
        {
             var scrollX, scrollY;
     
             if (document.all)
             {
    	if (!document.documentElement.scrollLeft)
    	      scrollX = document.body.scrollLeft;
    	else
    	      scrollX = document.documentElement.scrollLeft;
     
    	if (!document.documentElement.scrollTop)
    	      scrollY = document.body.scrollTop;
    	else
    	      scrollY = document.documentElement.scrollTop;
              }   
             else
            {
                    scrollX = window.pageXOffset;
    	scrollY = window.pageYOffset;
             }    
     
            document.getElementById("xCoordHolder").value = scrollX; 
            document.getElementById("yCoordHolder").value = scrollY;    
        }
     
        function SmartScroller_Scroll()
        {
               var x = document.getElementById("xCoordHolder").value;
               var y = document.getElementById("yCoordHolder").value;
               window.scrollTo(x, y);
         }			   
     
     
         window.onload = SmartScroller_Scroll;
         window.onscroll = SmartScroller_GetCoords;
         window.onkeypress = SmartScroller_GetCoords;
         window.onclick = SmartScroller_GetCoords;
    </script>
    Ensuite il faut créer sur chaque page deux contrôles webform "textbox" s'appelant "xCoordHolder" et "yCoordHolder" ayant les attributs width=0, height=0 et EnableViewState=true.

    Le tour est joué.
    En tout cas merci pour ton aide Pete

  8. #8
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut
    salut,
    il se trouve que je viens d'essayer cette derniere manip, mias chez moi ca marche po

    en fait, ca n'a rien changé...

  9. #9
    Membre éclairé
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Par défaut
    shams, qu'est ce qui ne marche pas et quelle manipe as tu fais ?
    Tu veux de l'aide ?

  10. #10
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut
    merci pete, en effet j'ai besoin d'un peu d'aide...!
    j'ai d'abord essayé la derniere methode que vonbier a donné. Mais ca ne merche j'ai des erreurs de javascript quand je lance ma page et que j'utilise la scrollbar. Je ne sais pas si ca vient du code ou de mon ordi, c'est bizarre en tout cas....

    Ensuite, je connaissais pas les fichiers ascx, donc j'ai suivi une methode sur msdn pour creer mon propre composant. C'etait aussi ta methode non? il me semble que dans ce que tu as indiqué de faire, il y a des trucs que je n'ai pas fait, donc la je vais recommencer... On va voir si je bloque sur un truc!

  11. #11
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut
    Citation Envoyé par Pete
    J'ai mis ce code dans le fichier ascx qui me sert de header, il est donc présent dans toute mes pages Web automatiquement !
    la je sais pas comment tu fais pour dire que c'est un header.
    Citation Envoyé par Pete
    Il faut aussi que tu aies rajouté une référence sur ta dll dans ton projet Web.
    la pareil, comment tu fais ca?

  12. #12
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut
    bon j'ai compilé ma librairie, il m'a juste dit qu'il ne peut pas lancer ce type de projet (j'ai fait F5), mais ca a compilé sans erreur...

    j'ai reussi a l'ajouter ("ajouter une reference").
    Mais maintenant, c'est quand tu dis qu'il faut ajouter le code a toutes les pages (j'ai essayé avec une!), ca marche pas et je comprend pas... j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    File or assembly name ICR.Web.Components, or one of its dependencies, was not found.
     
    // a cette ligne
    <%@ Register TagPrefix="icr" Namespace="ICR.Web.Components" Assembly="ICR.Web.Components" %>

  13. #13
    Membre éclairé
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Par défaut
    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ Register TagPrefix="icr" Namespace="ICR.Web.Components" Assembly="ICR.Web.Components" %>
    Signifie que tu dans ta page, tous les tags commençant par 'icr', par exemple <icr:ClientScrollBar>, correspondent à des controles définis dans la librairie (ie: l'assembly) 'ICR.Web.Components'.
    Donc il faut que la librairie dans la quelle tu as mis le code qui gère les scolls bar s'appelle 'ICR.Web.Components'...
    C'est plus clair ?

  14. #14
    Membre confirmé Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Par défaut
    ok merci, je vais essayer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Gestion de processus
    Par Lahouari dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/03/2005, 09h17
  2. [VB.NET] Gestion en temps réel d'une bdd access
    Par qwiskas dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/02/2005, 19h37
  3. [VB.NET] Gestion des boutons d'un formulaire
    Par dinbougre dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/01/2005, 09h35
  4. [VB.NET] Gestion pool de connexions....
    Par Sinclair dans le forum ASP.NET
    Réponses: 23
    Dernier message: 21/12/2004, 10h57
  5. Réponses: 8
    Dernier message: 06/07/2004, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo