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

VB.NET Discussion :

Glisser-déplacer les lignes d'un datagridview


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 47
    Par défaut Glisser-déplacer les lignes d'un datagridview
    Bonjour,
    Comment je peux glisser-déplacer les lignes de mon datagridview avec la souris?
    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563

  3. #3
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 47
    Par défaut
    Bonjour,
    Merci d'abord pour votre réponse. Le problème c'est que je remplis la Datagridview avec une requête. Y a t-il pas un moyen de le faire?

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Citation Envoyé par hanadakia Voir le message
    Le problème c'est que je remplis la Datagridview avec une requête
    Pourquoi est-ce un problème ?

    Citation Envoyé par hanadakia Voir le message
    Y a t-il pas un moyen de le faire?
    Oui, comme présenté dans le lien de ZenZiTone...


    J@ck.

  5. #5
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 47
    Par défaut
    Parce que ça me donne un message d'erreur quand j’exécute le programme: "Impossible d'ajouter par programmation des lignes à la collection de lignes DataGridView lorsque le contrôle est lié aux données."

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour
    Comme dit par Zenzitone ,il faut suivre ce qui est dit dans le lien donné...
    Le lien dit :"If it is databound, you should manipulate the order of items in the DataSource" (s'il lié bindé,vous devez manipuler l'ordre des items dans le datasource)...
    C.à.d manipuler l'index du DataBoundItem du DataRow à deplacer...

    code .vb du lien tenant de cet aspect :
    1/class data Person exemple
    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
     
    Public Class Person
        Private _nom As String
        Public Property Nom() As String
            Get
                Return _nom
            End Get
            Set(ByVal value As String)
                _nom = value
            End Set
        End Property
        Private _salaire As Double
        Public Property Salaire() As Double
            Get
                Return _salaire
            End Get
            Set(ByVal value As Double)
                _salaire = value
            End Set
        End Property
     
    End Class
    code .vb du lien translaté:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    Public Class Form1
        Private persons As New List(Of Person)
        Private rnd As New Random
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            DataGridView1.AllowDrop = True
            For index = 1 To 10
                Dim p As New Person() With {.Nom = "item" + index.ToString, .Salaire = rnd.NextDouble() * 100}
                persons.Add(p)
            Next
            DataGridView1.DataSource = persons
     
        End Sub
        Private dragBoxFromMouseDown As Rectangle
        Private rowIndexFromMouseDown As Integer
        Private rowIndexOfItemUnderMouseToDrop As Integer
     
     
     
        Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
            rowIndexFromMouseDown = DataGridView1.HitTest(e.X, e.Y).RowIndex
     
            If (rowIndexFromMouseDown <> -1) Then
                Dim dragSize As Size = SystemInformation.DragSize
     
                dragBoxFromMouseDown = New Rectangle(New Point(e.X - (dragSize.Width / 2),
                                                               e.Y - (dragSize.Height / 2)),
                                    dragSize)
     
            Else
                dragBoxFromMouseDown = Rectangle.Empty
     
            End If
     
        End Sub
     
        Private Sub DataGridView1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseMove
            If e.Button And MouseButtons.Left = MouseButtons.Left Then
                If dragBoxFromMouseDown <> Rectangle.Empty And
                Not dragBoxFromMouseDown.Contains(e.X, e.Y) Then
     
                    Dim dropEffect As DragDropEffects = DataGridView1.DoDragDrop(
                        DataGridView1.Rows(rowIndexFromMouseDown), DragDropEffects.Move)
                End If
            End If
     
        End Sub
        Private Sub DataGridView1_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragOver
            e.Effect = DragDropEffects.Move
        End Sub
        Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
     
            Dim clientPoint As Point = DataGridView1.PointToClient(New Point(e.X, e.Y))
     
     
            rowIndexOfItemUnderMouseToDrop =
                DataGridView1.HitTest(clientPoint.X, clientPoint.Y).RowIndex
     
     
            If (e.Effect = DragDropEffects.Move) Then
                Dim rowToMove As DataGridViewRow = CType(e.Data.GetData(GetType(DataGridViewRow)), DataGridViewRow)
                Dim p As Person = CType(rowToMove.DataBoundItem(), Person)
     
                persons.RemoveAt(rowIndexFromMouseDown)
                persons.Insert(rowIndexOfItemUnderMouseToDrop, p)
     
                'refresh
     
                DataGridView1.Invalidate()
            End If
     
     
        End Sub
     
     
    End Class
    bon code...

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

Discussions similaires

  1. Coloré les lignes d'un datagridview
    Par abbd dans le forum Windows Forms
    Réponses: 14
    Dernier message: 21/02/2008, 16h37
  2. [code VC++]Tirer les lignes d'un DataGridView à l'insertion
    Par Thor Tillas dans le forum Visual C++
    Réponses: 1
    Dernier message: 30/05/2007, 13h58
  3. [VB.NET]Comment supprimer les lignes d'un datagridView
    Par vijeo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/09/2006, 17h54
  4. Déplacer les lignes de tableaux
    Par linar009 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 07/08/2006, 11h27
  5. [VB 2005] Supprimer toutes les lignes d'un DataGridView
    Par Bob Langlade dans le forum Windows Forms
    Réponses: 4
    Dernier message: 25/01/2006, 16h03

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