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

C# Discussion :

DataGridView - Déplacer une ligne


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut DataGridView - Déplacer une ligne
    Bonjour,

    J'aimerai déplacé une ligne de mon DataGridView d'un rang vers le haut avec un bouton 'Down' et d'un rang vers le bas avec un bouton 'Up' et je vous avoue, je ne vois pas trop comment m'y prendre.

    En "image" ce que je veux :

    Column1 | Column2
    -----------------------
    -ValueA- | -ValueB-
    -ValueC- | -ValueD- <--- LIGNE sélectionnée
    -ValueE- | -ValueF-


    devient après un clic sur le bouton 'Up' :

    Column1 | Column2
    -----------------------
    -ValueC- | -ValueD- <--- LIGNE sélectionnée
    -ValueA- | -ValueB-
    -ValueE- | -ValueF-

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    La datagridview utilise-t'elle ou non le binding source?
    • Si oui, je ne vois rien de simple.
    • Si non, on peut simplement permuter les values des cellules des 2 rows à intervertir.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Oui.
    Mais je vais y arriver (je peine mais je vais y arriver.. même si c'est pas très propre au final...) peut être en faisant un truc du genre :

    - copy/clone de ma Row
    - suppression de la ligne sélectionnée
    - insertion à la position voulue de ma copie de Row

    ... Enfin en plus compliqué une fois que j'aurai résolu tous les problèmes auxquels je n'ai pas pensé

    Enfin vos idées seront de toute façon bonne à prendre !

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Voila ce que j'ai pondu, pour le 'Up' (je vous épargne le Down, c'est du même acabit) :
    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
          if( dgv.CurrentRow != null ) {
     
            // Index de la ligne sélectionnée
            int selectedRowIndex = dgv.CurrentRow.Index;
     
            if( selectedRowIndex > 0 ) {
              // On effectue une copie de la ligne à déplacer
              DataRow drow = ( (DataTable)bindingSource.DataSource ).NewRow();
              object[] Donnees = ( (DataTable)bindingSource.DataSource ).Rows[dgv.CurrentRow.Index].ItemArray;
              drow.ItemArray = Donnees;
     
              // Suppression de la ligne sélectionnée
              ( (DataTable)bindingSource.DataSource ).Rows.RemoveAt( selectedRowIndex );
              // Insertion de la ligne 'copie' à un l'index : (selectedRowIndex - 1)
              ( (DataTable)bindingSource.DataSource ).Rows.InsertAt( drow, selectedRowIndex - 1 );
     
              // Sélection de la ligne que l'on vient d'insérer
              dgv.CurrentCell = dgv.Rows[selectedRowIndex - 1].Cells[3];
            }
          }
    Si quelqu'un a mieux qu'il n'hésite pas

    Je mettrai résolu ce soir.

    [EDIT] : je ne l'avais pas précisé, mais le tri sur les colonnes doit être désactivé

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

Discussions similaires

  1. [MySQL] Déplacer une ligne d'une table à l'autre
    Par Richard_Rahl dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/06/2008, 18h22
  2. Problème pour déplacer une ligne à partir d'une variable
    Par Cadenwarr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2008, 12h12
  3. [VB 2005][DatagridView] Ajouter une ligne par code
    Par RaelRiaK dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/01/2007, 22h54
  4. [débutant]déplacer une ligne dans CListCtrl
    Par mouss31 dans le forum MFC
    Réponses: 4
    Dernier message: 30/10/2006, 14h32

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