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 :

Suppression Row dans une DataGridView avec click droit [Débutant]


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Points : 37
    Points
    37
    Par défaut Suppression Row dans une DataGridView avec click droit
    Bonjour tout le monde !


    Voilà après de longue recherche j'ai réussi à avoir un code qui correspond à ma demande mais je bloque sur un petit pépin et votre aide me permettra d'avancer sur mon projet.

    J'ai donc une DataGridView (nommé DataGridXML) dans laquelle je récupère le contenu d'un fichier XML sans aucun soucis.
    Je veux un menu contextuel sur la DGV afin d'ajouter, éditer et surtout supprimer une ligne et en particulier supprimer la ligne sur laquelle le click droit a été fait.

    Le click droit sélectionne bien la ligne (entière) en question, mais lorsque je fais "supprimer" via le menu contextuel (ContextMenuStrip1), l'action supprime la ligne active (c'est ce que je veux ouf !) mais aussi la suivante et là je bloque complet !

    Voici le code :

    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
     
    		Private rowIndex As Integer = 0	
     
    	Sub Button1Click(sender As Object, e As EventArgs)
     
    		'récupération des données XML directement la DGV		
    		Dim filePath As String = "I:\gsec92.xml"
     
    		CONSIGNEDataSet.ReadXml(filePath)
    		DataGridXML.DataSource = CONSIGNEDataSet
    		DataGridXML.DataMember = "CONSIGNEDATA"
     
    	End Sub
     
    	Private Sub DataGridXML_CellMouseUp_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridXML.CellMouseUp
    		'permet d'activer la ligne sous le curseur suite au click droit 
    		'stockage de la position de la "row" dans la variable rowIndex
    		If e.Button = MouseButtons.Right Then
    		            Me.DataGridXML.Rows(e.RowIndex).Selected = True
    		            Me.rowIndex = e.RowIndex
     		            Me.DataGridXML.CurrentCell = Me.DataGridXML.Rows(e.RowIndex).Cells(1)
    		            Me.ContextMenuStrip1.Show(Me.DataGridXML, e.Location)
    		            ContextMenuStrip1.Show(Cursor.Position)
    		        End If
    	End Sub		
     
    	Sub SupprimerToolStripMenuItemClick(sender As Object, e As EventArgs) Handles supprimerToolStripMenuItem.Click
    		If Not Me.DataGridXML.Rows(Me.rowIndex).IsNewRow Then
    			Me.DataGridXML.Rows.RemoveAt(Me.rowIndex)
    		End If
    	End Sub
    Peut-être qu'un œil extérieur saura me dire où est le soucis car la j'en suis à plusieurs de recherche, de bidouille en vain.

    Merci d'avance pour votre aide !
    pas mal de connaissance en c/c++/mysql
    debute en php

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    Alors, en suivant l'exemple sur lequel je me suis appuyé si je remplace ma fonction "supprimer"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub SupprimerToolStripMenuItemClick(sender As Object, e As EventArgs) Handles supprimerToolStripMenuItem.Click
    		If Not Me.DataGridXML.Rows(Me.rowIndex).IsNewRow Then
    			Me.DataGridXML.Rows.RemoveAt(Me.rowIndex)
    		End If
    	End Sub
    par celle de l'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ContextMenuStrip1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextMenuStrip1.Click
            If Not Me.DataGridView1.Rows(Me.rowIndex).IsNewRow Then
                Me.DataGridView1.Rows.RemoveAt(Me.rowIndex)
            End If
        End Sub
    ça supprime bien uniquement la ligne sélectionnée par le click droit, par contre et c'est logique l'action à lieu quelque soit l'item du contextmenu sur lequel on click. Je suis pommé
    pas mal de connaissance en c/c++/mysql
    debute en php

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    C'est bon j'ai trouvé !

    il fallait que j'attribut le handles à l'item "supprimer" du ContextMenuStrip1 comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ContextMenuStrip1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles supprimerToolStripMenuItem.Click
            If Not Me.DataGridXML.Rows(Me.rowIndex).IsNewRow Then
                Me.DataGridXML.Rows.RemoveAt(Me.rowIndex)
            End If
        End Sub
    Maintenant il faut que je passe à l'édition (je crois qu'il faut faire du "binding" mais je pige pas pour le moment).
    pas mal de connaissance en c/c++/mysql
    debute en php

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

Discussions similaires

  1. [Débutant] l'ajout, la suppression et la modification dans une DataGridView
    Par Mr_developer dans le forum C#
    Réponses: 2
    Dernier message: 17/06/2012, 00h33
  2. sélectionner une row dans une DataGridView
    Par Shadam dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/05/2011, 10h18
  3. Réponses: 2
    Dernier message: 21/10/2010, 17h23
  4. Réponses: 6
    Dernier message: 17/06/2008, 11h28
  5. Bloquer une seule Row dans un DataGridView
    Par Contrec dans le forum C#
    Réponses: 4
    Dernier message: 05/09/2007, 13h07

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