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 :

[C#][Débutant] 4 questions pour supprimer ligne dans datagriview


Sujet :

Windows Forms

  1. #1
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut [C#][Débutant] 4 questions pour supprimer ligne dans datagriview
    Bonjour

    j ai 4 questions. Je veux supprimer une ligne dans un DatgridView,
    je fais donc ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dsFilms.Tables["Films"].Rows[dataGridListe.CurrentRow.Index].Delete();
    1ére question
    Est ce correct comme code ?

    2eme question
    Apres avoir supprimé une ligne, je veux en supprime d autres, et la ca va plus, car il me supprime toujours la ligne au dessus de celle selectionné, comment regler ca ?

    3eme question
    J ai du code dans dataGridListe_SelectionChanged, qui m'affiche des infos dans la statusbar, mais comme la ligne viens d etre supprimé, ca plante, comment emecher qu il passe dans cet evenement lors de suppressions de ligne

    4eme question
    pour ouvrir ma table, j ouvre la base, je charge les donnes dans le dataset, puis je referme la base, mais maintenant comment enregistrer mes données dans ma base, puisque je viens de supprimer des lignes ??

    merci a vous
    Philippe Cazaux-Moutou
    C#
    Delphi
    Windev

    Guadeloupe

    www.ancestrologie.net/fr

  2. #2
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    essaye ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DialogResult result = MessageBox.Show(this, "Voulez-vous supprimer ce film de votre liste?", "Supprimer", MessageBoxButtons.YesNo);
    if (result == DialogResult.Yes)
    {
        datasetBindingSource.RemoveCurrent();
     
        dsFilms.AcceptChanges();
    }

    Pense à modifier le le nom du bindingsource je connais pas le tien, en tout cas là ça va super bien marcher quand tu cliqueras sur ton bouton supprimer

  3. #3
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    ah oui, les donnés seront sauvegardé dans ta table aussi, pour ta barre d'état tu dois lui demandé de lire les info du currentrow comme ça plus de plantage

  4. #4
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    J ai rajouté le compos BindingSource, car j en avais pas sur ma form, je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       bsFilms.RemoveCurrent();
       dsFilms.AcceptChanges();
    mais ca va pas, il supprime toujours pas la ou les lignes dans la base

    pour la barre d'état, je fais ca et donc apres cahque delete ca plante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                if (dsFilms.Films.Count > 0)
                {
                    sValeur = dsFilms.Tables["Films"].Rows[dataGridListe.CurrentRow.Index]["FI_ID"].ToString() + " - " +
                        dsFilms.Tables["Films"].Rows[dataGridListe.CurrentRow.Index]["FI_Titre"].ToString();
     
                    _mainForm._PCMAppli.iIDFilms = Convert.ToInt16(dsFilms.Tables["Films"].Rows[dataGridListe.CurrentRow.Index]["FI_ID"].ToString());
                }
    en fait quand il passe sur sValeur, j ai ca comme message d'erreur
    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
     
    L'exception System.Data.DeletedRowInaccessibleException n'a pas été gérée par le code utilisateur
      Message="Impossible d'accéder via la ligne aux informations de ligne supprimées."
      Source="System.Data"
      StackTrace:
           à System.Data.DataRow.GetDefaultRecord()
           à System.Data.DataRow.get_Item(String columnName)
           à DVDTheque.FFilmsListe.doAfficheDonnee() dans D:\Projets_Net\PCM_DVDtheque\Films\FFilmsListe.cs:ligne 106
           à DVDTheque.FFilmsListe.dataGridListe_SelectionChanged(Object sender, EventArgs e) dans D:\Projets_Net\PCM_DVDtheque\Films\FFilmsListe.cs:ligne 156
           à System.Windows.Forms.DataGridView.OnSelectionChanged(EventArgs e)
           à System.Windows.Forms.DataGridView.SetSelectedRowCore(Int32 rowIndex, Boolean selected)
           à System.Windows.Forms.DataGridView.SetSelectedElementCore(Int32 columnIndex, Int32 rowIndex, Boolean selected)
           à System.Windows.Forms.DataGridView.SetAndSelectCurrentCellAddress(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick, Boolean clearSelection, Boolean forceCurrentCellSelection)
           à System.Windows.Forms.DataGridView.OnRemovedRow_PostNotification(DataGridViewRow dataGridViewRow, Point newCurrentCell)
           à System.Windows.Forms.DataGridViewRowCollection.OnCollectionChanged_PostNotification(CollectionChangeAction cca, Int32 rowIndex, Int32 rowCount, DataGridViewRow dataGridViewRow, Boolean changeIsDeletion, Boolean changeIsInsertion, Boolean recreateNewRow, Point newCurrentCell)
           à System.Windows.Forms.DataGridViewRowCollection.OnCollectionChanged(CollectionChangeEventArgs e, Int32 rowIndex, Int32 rowCount, Boolean changeIsDeletion, Boolean changeIsInsertion, Boolean recreateNewRow, Point newCurrentCell)
           à System.Windows.Forms.DataGridViewRowCollection.RemoveAtInternal(Int32 index, Boolean force)
           à System.Windows.Forms.DataGridView.DataGridViewDataConnection.ProcessListChanged(ListChangedEventArgs e)
           à System.Windows.Forms.DataGridView.DataGridViewDataConnection.currencyManager_ListChanged(Object sender, ListChangedEventArgs e)
           à System.Windows.Forms.CurrencyManager.OnListChanged(ListChangedEventArgs e)
           à System.Windows.Forms.CurrencyManager.List_ListChanged(Object sender, ListChangedEventArgs e)
           à System.Windows.Forms.BindingSource.OnListChanged(ListChangedEventArgs e)
           à System.Windows.Forms.BindingSource.InnerList_ListChanged(Object sender, ListChangedEventArgs e)
           à System.Data.DataView.OnListChanged(ListChangedEventArgs e)
    Philippe Cazaux-Moutou
    C#
    Delphi
    Windev

    Guadeloupe

    www.ancestrologie.net/fr

  5. #5
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Je n arrives toujours pas a ce que mes données soient validées dans la base

    merci de votre aide
    Philippe Cazaux-Moutou
    C#
    Delphi
    Windev

    Guadeloupe

    www.ancestrologie.net/fr

  6. #6
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    ma base est une base access, car je suis avec le C# express,
    par contre on regardant un peu partout j ai réussi, mais peux t on me dire si ce que je fais est bon
    j ai mis en commentaire le AcceptChanges
    par contre je voudrais savoir pour les transactions ?? comment coder ca ??

    merci

    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
                   try
                    {
                        // Suppression de la ligne dans la datagrid
                        bsFilms.RemoveCurrent();
                        //dsFilms.AcceptChanges();
     
                        // ouverture de la base
                        dbConnection.Open();
                        //OleDbTransaction tx = dbConnection.BeginTransaction();
                        dbConnection.BeginTransaction();
                        // MAJ des données
                        //tx.Commit();
                        dbDAFilms.Update(dsFilms);
                        //tx.Dispose();
                    }
                    catch (System.Exception updateException)
                    {
                        throw updateException;
                    }
                    finally
                    {
                        // Fermeture de la base
                        dbConnection.Close();
                    }
    Philippe Cazaux-Moutou
    C#
    Delphi
    Windev

    Guadeloupe

    www.ancestrologie.net/fr

  7. #7
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    La question est aussi résolu comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                // affichage du titre dans la status bar de la Main
                string sValeur = "";
                if (dataGridListe.CurrentRow != null)
                {
                    DataRow r;
                    r = (DataRow)(((DataRowView)this.dataGridListe.CurrentRow.DataBoundItem).Row);
                    sValeur = r["FI_ID"].ToString() + " - " + r["FI_Titre"].ToString();
     
                    _mainForm._PCMAppli.iIDFilms = Convert.ToInt16(r["FI_ID"].ToString());}
    merci a tous
    Philippe Cazaux-Moutou
    C#
    Delphi
    Windev

    Guadeloupe

    www.ancestrologie.net/fr

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

Discussions similaires

  1. Bouton pour supprimer ligne dans JTable
    Par djosimd dans le forum Débuter
    Réponses: 0
    Dernier message: 16/02/2014, 19h12
  2. VBS pour supprimer ligne dans ficher texte
    Par t_predator dans le forum VBScript
    Réponses: 6
    Dernier message: 11/08/2008, 15h20
  3. Réponses: 2
    Dernier message: 04/01/2007, 16h17
  4. Réponses: 2
    Dernier message: 18/05/2006, 13h38
  5. methodologie pour Supprimer données dans base de données
    Par elkhy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 26/04/2006, 18h30

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