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

Windows Forms Discussion :

Suppression d'une ligne dans un datagridview


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 112
    Points : 80
    Points
    80
    Par défaut Suppression d'une ligne dans un datagridview
    Bonjour!

    j'aimerais pouvoir supprimer une ou plusieurs lignes dans mon datagridview dont les données proviennent d'une base de données.

    Voici le code que j'ai fais mais ca ne marche pas !

    Code VB.NET : 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
     
    Private Sub cmdDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDelete.Click
     
            If Obj IsNot Nothing AndAlso xIsLoading = False Then
     
                Dim InvType As CIctype = Obj
     
                If DgWhse.SelectedRows.Count > 0 Then
     
                    For Each R As DataGridViewRow In DgWhse.SelectedRows
     
                        'If R.Visible = True Then
     
                        Dim whse() As CItwhs = CItwhs.GetWarehousesInvType(InvType.ctype)
                        Whse = R.Tag
     
                        'If whse.IsNew = False Then
                        If InvType IsNot Nothing Then
     
                            Me.Cursor = Cursors.WaitCursor
                            Application.DoEvents()
     
                            Dim Result As MsgBoxResult = MsgBox("Are you sure you want to delete this warehouse ?", MsgBoxStyle.Question Or MsgBoxStyle.YesNoCancel)
     
                            Select Case Result
     
                                Case MsgBoxResult.No
     
                                    ' Skip 
                                Case MsgBoxResult.Yes
     
                                    ' Suppression 
                                    'whse.
                                    DgWhse.Rows.Remove(R)
     
                                Case MsgBoxResult.Cancel
     
                                    Exit Sub
     
                            End Select
                        End If
                        'End If
                    Next
                End If
     
                ' Mise à jour des valeurs. 
                LoadWarehouse(InvType)
     
                Me.Cursor = Cursors.Default
                cmdDelete.Enabled = True
            End If
        End Sub

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par misscricri Voir le message
    ca ne marche pas !
    Mais encore ? Est-ce qu'il se produit une erreur ? Si oui, que dit l'erreur (type, message, stacktrace) ? Est-ce que le comportement est différent de celui que tu attends ? Si oui, as-tu essayé de déboguer pas à pas ?

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 112
    Points : 80
    Points
    80
    Par défaut
    J'ai trouvé l'erreur. Il me manquait un bout de code. La suppression se fait tres bien. mais il faut que je reload la form pour voir que ma ligne a bien été supprimée.

    comment faire pour le voir aussitôt après avoir cliquer sur mon bouton de suppression?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Montre ton code final, et le code qui "reload la form"

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Normalement si ta grille est bindée à un objet qui implémente les interfaces qui vont bien dont j'ai plus le nom en tête (IBindingList sauf erreur).

    La suppression d'une ligne sur la grille se propage alors automatiquement à la liste et vice et versa.

    Bien entendu au final il reste la synchro entre la liste en mémoire et la base de donnée (mais c'est un autre sujet ça non?)

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 112
    Points : 80
    Points
    80
    Par défaut
    Oui c'est bien ca ! La suppression se fait bien mais il faut que je ferme ma form pour voir le résultat

    Comment contrer ca ?

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Faut voir ce que tu utilises pour faire l'interface entre ta liste en mémoire et ta base de donnée...

    Si tu utilises les datasets. Les modifications sont répercutées dans la base de données uniquement lors de l'appel de la méthode .Update(unDataset.uneDataTable) d'un tablemanager (c'est le même objet qui remplit le dataset avec la fonction .Fill(unDataset.uneDatatable).

    Normalement on appelle cette fonction de mise à jour à la sortie d'un formulaire "au plus tard" ou alors dans un bouton sauvegarder.

    Il est possible d'effectuer cette mise à jour lors de chaque modification dans ta liste d'application en utilisant l’évènement RowDeleted de ta DataTable pour répercuter immédiatement la modification sur la base de donnée (il y a RowChanged pour la modification et RowAdded pour l'ajout).

    Néanmoins ce genre de bricole va provoquer une montée de trafic et de calcul sur ta base de donnée.

    De plus si cette bidouille est utilisé pour réduire les problèmes d'accès concurrentiels, sache que ça ne résous en rien cette problématique vu que ce n'est pas pour autant que tu effaces plus rapidement l'enregistrement sur la base de donnée qu'il va disparaître comme par magie sur les autres instances qui ont déjà chargé cette enregistrement. Il est donc par conséquent toujours nécessaire de mettre en place une gestion pour l'accès concurrentiel.

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

Discussions similaires

  1. Suppression d'une ligne dans Datagridview et dans la Base de données
    Par MAB-ANZA dans le forum Accès aux données
    Réponses: 2
    Dernier message: 31/05/2011, 11h13
  2. [JTable] suppression d'une ligne dans un JTable?
    Par hby dans le forum Composants
    Réponses: 14
    Dernier message: 15/03/2007, 14h44
  3. Réponses: 3
    Dernier message: 26/03/2006, 20h45
  4. [VB.net] Détection suppression d'une ligne dans Datagrid
    Par Cereal123 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/03/2006, 14h08
  5. [VB6]Suppression d'une ligne dans un fichier
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/02/2006, 11h20

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