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 :

Datagrid - Positionnement d'une ligne


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Datagrid - Positionnement d'une ligne
    Bonjour,

    J'ai un petit problème, je cherche à positionner en haut d'un datagrid une ligne que l'on sélectionne:

    Disons que mon datagrid se présente comme ca (page de 10 lignes):

    Page 1________Page2______page3 ...

    Valeur1_______Valeur11____valeur21...
    Valeur2_______Valeur12____...
    Valeur3_______Valeur13
    Valeur4_______Valeur14
    Valeur...______Valeur...
    Valeur10______Valeur20

    <précédent> <suivant>

    Un clic sur <précédent> ou <suivant> me positionne sur les pages de mon datagrid.

    Si l'utilisateur est par exemple sur la page 2, est sélectionne la ligne "Valeur14". Je veux positionner la ligne en haut de la page en cours, tout en gardant le tri de mon datagrid.

    Page 1_______Page2_______Page 3
    Valeur???_____Valeur4_____Valeur14
    Valeur???_____Valeur5_____Valeur15
    Valeur???_____Valeur6_____Valeur16
    Valeur...______Valeur...____Valeur...
    Valeur3_______Valeur13____Valeur23

    Le datagrid se positionne donc sur la page 3 avec la valeur "Valeur14" mais en interne, la page 1 de mon datagrid est en déficit de données.

    La seule manière de faire la chose serait donc de "bidouiller" mon datagrid en fonction de la page demandée par l'utilisateur: par exemple supprimer la page "1" tant que l'utilisateur est sur la page 2 et 3 et remettre le datagrid initial s'il revient sur la 1ère page, mais cela me paraît excessivement lourd.

    Voilà, j'espère avoir été clair et j'aimerai avoir votre avis, s'il y a une fonctionnalité interne du Datagrid permettant cette gestion du paging ou s'il faut effectivement bidouiller le datagrid en lui ajoutant ou supprimant des lignes...

    Merci

  2. #2
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Hello !

    Peut-être pourrais-tu simplement jouer sur ta source de données ? C'est-à-dire faire ce mécanisme à la main, en supprimant les premières données de la liste pour que ta valeur remonte.

    Mais je ne comprends pas pourquoi tu veux faire ça ? C'est juste un moyen de mettre en évidence tes données ? Une sorte de ré-organsation ?

    Est-ce que tu peux expliquer un peu plus la raison pour laquelle tu veux faire ça ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je fais cela pour mettre en évidence la ligne sélectionnée, je sais il serait plus pratique de la mettre en sur-brillance ou autre mais bon...

    En fait il s'agit de traiter des tables de base de données, et la sélection d'un élément dans une ligne doit re-trier la table en fonction de la colonne sélectionnée, et mettre la ligne sélectionnée en haut de la page.

    Exemple:
    A France
    B Canada
    C Belgique
    D Russie
    E Egypte

    Si l'utilisateur sélectionne : "Egypte", ma datagrid devrait ressembler à :

    E Egypte
    A France
    D Russie

    Et les valeurs "B Canada" et "C Belgique" se retrouveront sur la page précédente.

    J'aimerai justement ne pas avoir à toucher à mes sources de données car c'est un traitement plutôt lourd sur de grosses tables, mais j'ai l'impression que je ne vais pas avoir le choix.

    Les 2 seules solutions que j'ai trouvées jusqu'ici consistent à :
    - 1 : ce que tu proposes : supprimer les lignes de la 1ère page et les réinsérer quand je voudrais la visualiser.
    - 2 : à l'inverse, créer des lignes "vides" dans ma datagrid dans la 1ère page que je détruirai à la visualisation de celle-ci.

  4. #4
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Je ne vois effectivement pas comment faire d'autre ...

    Mais comme tu dis, si c'est uniquement pour mettre en évidence (pourquoi, d'ailleurs ?) la ligne sélectionnée, tu pourrais simplement changer sa couleur de fond !

    Sinon, tu pourrais faire la chose suivante :
    1. trouver combien d'éléments tu devrais "supprimer" pour remonter ta ligne
    2. récupérer la liste des IDs de ces éléments
    3. modifier ta datasource en ajoutant un argument genre excludedIDs qui correspond à la liste ci-dessus
    4. si tu fais du SQL pour choper tes données, tu ajoutes un simple "AND ID NOT IN (...)"


    C'est un peu de la grosse cuisine, et tu devrais refaire tout ce mic-mac à chaque nouvelle ligne sélectionnée et/ou changement de tri, mais si c'est vraiment ce que tu veux ...

    EDIT: en relisant ton exemple, je me rends compte que tu veux que ton affichage soit "cyclique" ? La Russie, qui était avant l'Egypte, doit ensuite être après ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Non non, l'affichage n'est pas cyclique, c'est juste que je dois également retrier ma table en fonction de l'élément selectionné (donc alphabétiquement dans l'ordre des pays dans mon exemple).

    Il faut croire qu'effectivement je ne m'en sortirais pas sans "grosse cuisine" comme tu dis.

    Merci de l'aide en tout cas

  6. #6
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Ok, je comprends !

    Bon courage en tous cas, et désolé de n'avoir pas pu plus t'aider !

Discussions similaires

  1. Positionnement sur une ligne d un DataGridVoew
    Par Cedric33 dans le forum C#
    Réponses: 2
    Dernier message: 24/10/2008, 15h44
  2. Problème de positionnement d'une ligne suivant l'épaisseur
    Par bubulemaster dans le forum Débuter
    Réponses: 5
    Dernier message: 01/02/2008, 18h28
  3. comment se positionner sur une ligne de table mysql ?
    Par pas30 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/01/2007, 14h43
  4. Réponses: 3
    Dernier message: 29/08/2005, 17h44
  5. [C#] DataGrid : Update d'une ligne
    Par Joad dans le forum ASP.NET
    Réponses: 12
    Dernier message: 29/04/2005, 13h14

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