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

JavaScript Discussion :

Repositionnement du curseur après AutoPostBack


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut Repositionnement du curseur après AutoPostBack
    Bonjour,

    Je développe une application ASP.NET avec VS 2010 en C#. La page principale contient un GridView dont les lignes contiennent des ItemTemplates qui contiennent eux-même des TextBox. Chaque TextBox a les propriétés OnTextChanged="actionChangeVal" AutoPostBack="true".

    Par conséquent, quand je saisis des données dans une TextBox et que je clique sur une autre, l'événement OnTextChanged se déclenche et également un AutoPostBack (donc rechargement de la page).

    Le problème est qu'après chaque chargement, la position du scrollbar se repositionne au début du tableau et la position du curseur est perdu.

    J'ai plus ou moins trouvé une solution pour la position du scrollbar mais je n'arrive pas replacer le curseur sur la dernière TextBox sur laquelle j'ai cliqué, histoire que le rechargement de la page paraisse transparent.

    Merci d'avance pour vos réponses.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    re,

    Je n'ai toujours pas trouvé de solution malgré de nombreuses recherches sur le net. J'ai même essayer MaintainScrollPositionOnPostback="true" mais cela ne marche pas. Je pense que c'est du au fait que la scrollbar, dont je veux sauvegarder la position, est intégré à une <DIV>. En effet ce n'est pas la scrollbar de base de la page.

    Pour les pseudo solutions trouvé en javascript, pas moyen de les faire marcher, les propriétés document.body.scrollLeft et document.body.scrollTop ou document.maDiv.scrollLeft et document.maDiv.scrollTop sont inexistantes.

    Si quelqu'un a une solution ça serait super sympa, je galère depuis une semaine la dessus et je ne trouve plus de piste à suivre

    Merci d'avance.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    passe l'element en paramètre et utilise
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    ha ok je vois, en effet grâce au focus le tableau ne reviendra pas tout au début, dommage que ça ne garde pas la position de la scrollbar mais c'est déjà bien.

    Merci SpaceFrog.

    Je débute en ASP.ET et je viens de comprendre que les éléments ASP.NET ne sont accessible que par le code C# (fichier .cs) et pas par le javascript et inversement. Comme mon GridView est un élément ASP.NET je ne peux pas utiliser le javascript snif, je dois tout gérer en C#.

    2 questions :
    => Comment récupérer l'élément où se trouve le focus en C# ?
    Mon besoin : Au moment où je modifie un champ de la GridView et que je clique sur un autre champ, le 1er lance l'événement onChangeText et j'aimerai récupérer le 2ème afin de replacer le focus sur celui au rechargement de la page.

    => Puis-je conserver la position des scrollbars d'une <DIV> après un rechargement ? la <DIV> étant un élément HTML cela devrait être réalisable en javascript j'imagine.
    Serait il préférable de remplacer la <DIV> par un <asp:panel> ?

    Merci d'avance pour vos réponses.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    a mon avis tout doit passer en get, c'est a dire dans l'url

    genre:

    f étant l'id de l'objet ayant le focus
    truc etant l'id du div pour le scroll
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    re, merci pour ta réponse mais apparemment en ASP.NET les méthodes standarts avec GET et POST ne se font plus trop, on peut utiliser Server.Transfer(URL) ou la méthode Post Page Posting. Il a aussi la solution avec des HiddenFields avec runat="server".

    J'avais d'ailleurs mis un post concernant cela y a pas longtemps : Lien

    Sinon j'ai enfin trouvé une solution pour la conservation des positions des scrollbars après rechargement de la page.
    J'ai abandonné le <asp:panel> et j'ai réessayé avec une <div>.
    J'ai trouvé une solution assez compréhensible dont je me fait un plaisir de vous en faire profiter.

    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
    42
    43
    44
    45
    46
    47
    48
     
    <body>
        <form id="form1" runat="server" style="max-width:100%;">
        <asp:ScriptManager ID="scriptManager" runat="server"    EnablePartialRendering="True" />
     
        <script language="javascript" type="text/javascript">
     
            var temp = Sys.WebForms.PageRequestManager.getInstance();
            temp.add_pageLoaded(pageLoaded);
     
            function pageLoaded(sender, args) {
                getScroll()
            }
     
            function getScroll() {
                document.getElementById("DivGrid").scrollLeft = document.getElementById("scrollPosX").value;
                document.getElementById("DivGrid").scrollTop = document.getElementById("scrollPosY").value;
            }
     
            function setScroll() {
                var x = document.getElementById("DivGrid").scrollLeft;
                var y = document.getElementById("DivGrid").scrollTop;
                document.getElementById("scrollPosX").value = x;
                document.getElementById("scrollPosY").value = y;
            }
     
        </script>
     
        <input type="hidden" id="scrollPosX" runat="server" name="scrollPosX"/>
        <input type="hidden" id="scrollPosY" runat="server" name="scrollPosY"/>
     
        <div id="DivGrid" style="min-height:600%;height:600px;min-width:100%;width:100%;overflow:scroll;" runat="server" onscroll="setScroll()" >
     
         <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="New_salaireId" DataSourceID="SqlDataSource1" 
                CellPadding="4" ForeColor="#333333" GridLines="Vertical" 
                onselectedindexchanged="GridView1_SelectedIndexChanged" >
     
    <!-- Codes pour les colonnes que je ne mets pas car inutile pour le sujet du post-->
     
         </asp:GridView>
         </div>
     
         <script type="text/jscript" >
              getScroll()       
        </script>
        </form>
    </body>
    Voilà, comme ça, les 2 scrollbars sont gérées, ça marche nikel. Vous pouvez faire pareil avec un <asp:panel> à la place de la <div> mais va falloir générer le javascript via le codehind.

    Maintenant je me penche sur la solution du positionnement du curseur dont SpaceFroq m'a déjà bien orienté, sachant que le GridView est un contrôle ASP.NET, cela sera géré dans le codehind (générant peut être du javascript).

    D'ailleurs SpaceFroq, le passage de valeurs n'est pas un problème, ce qui m'intéresse c'est comment trouver la position du curseur dans la page en cours. Si tu as la solution ça m'intéresse fortement

    Je ne peux apparemment plus éditer le titre du post mais il serait bien qu'un admin change le titre "Repositionnement du curseur après AutoPostBack" en "Repositionnement du curseur et des scrollbars après AutoPostBack"

Discussions similaires

  1. Placement du curseur après le choix d'une date
    Par amine1980 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 28/08/2012, 08h32
  2. repositionner le focus après le click d'un bouton
    Par Damien.020 dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/07/2012, 10h42
  3. Ecran noir sans curseur aprés le chargement de windows
    Par zayoub dans le forum Windows Vista
    Réponses: 5
    Dernier message: 24/04/2012, 16h07
  4. Repositionnement du curseur après AutoPostBack
    Par Beo69 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 23/07/2010, 17h31
  5. Positionnement du curseur après action
    Par Monbasinstinct dans le forum Access
    Réponses: 8
    Dernier message: 22/09/2006, 12h02

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