Je travaille sous visual studio 2008 et j'ai un dataset en relation avec une db access.

J'aimerai savoir comment je peux supprimer un datarow. j'ai tenté ceci mais il me lève l'exception:
IndexOutOfRangeException n'a pas été gérée.
le datarow donné ne se trouve pas dans le datarowCollection actuel.

Chose surprenante quand je regénère, la ligne a bien été supprimée.

voici le code:

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
detailS_COMMANDESTableAdapter1.Delete(idCommande, idArticl, quantite);
                ds.DETAILS_COMMANDESRow row = ds1.DETAILS_COMMANDES.NewDETAILS_COMMANDESRow();
                row.FK_IDARTICLE = idArticl;
                row.FK_IDCOMMANDE = idCommande;
                row.QUANTITE = Convert.ToInt32(dgDetailsComm[2, dgArticle.CurrentRow.Index].Value);
                row.LIBELLE_ART = dgDetailsComm[3, dgDetailsComm.CurrentRow.Index].Value.ToString();
                row.PRIX_UNIT = Convert.ToInt32(dgDetailsComm[4, dgArticle.CurrentRow.Index].Value);
                row.PRIX_LIGNE = Convert.ToInt32(dgDetailsComm[5, dgDetailsComm.CurrentRow.Index].Value);
 
                ds1.DETAILS_COMMANDES.RemoveDETAILS_COMMANDESRow(row); //exception ici
                //datagridview.datasource = dataview
                dgDetailsComm.DataSource = dvDetailsComm;
                dgDetailsComm.Refresh();

Avez vous une solution pour éviter cette exception et pourquoi mon datagridview ne se met pas de suite à jour après l'avoir supprimé?

J'ai également le meme problème avec la modification où là je n'ai pas d'erreur mais mon datagridview ne se met à jour qu'au lancement suivant:

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
private void btModif_Click(object sender, EventArgs e)
        {
             int idArticl = Convert.ToInt32(dgDetailsComm[1, dgDetailsComm.CurrentRow.Index].Value);
             int quantite = Convert.ToInt32(cbQuantite.SelectedItem);
             int quantiteOriginal = Convert.ToInt32(dgDetailsComm[2, dgDetailsComm.CurrentRow.Index].Value);
             detailS_COMMANDESTableAdapter1.Update(quantite, idCommande, idArticl, quantiteOriginal);
 
             dgDetailsComm.DataSource = dvDetailsComm;
             dgDetailsComm.Refresh();
        }

merci