Identifier row dataset avec row DGV

Signaler
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Bonjour

Comment peut on avoir l'index d'un row DataTable liée a un DGV a partir du rowindex DGV

Je m'explique
Je charge un DGV a partir d'une table d'un DataSet

DGV.datasource=DS.Table[0];

A ce moment  le row 0 du DGV correspond au row 0 du dataset

Mais j'efface le Row 0 du dataset

DS.Tables[0].Rows[0].Delete();
Le DGV n'affiche plus le ROW 0 MAIS
A ce moment  le row 0 du DGV correspond au row 1 du dataset

Donc si l'utilisateur veut agir sur le row 0 du DGV, je dois agir sur le ROW 1 du dataset
Mais la problèmatique est similaire si je trie le DGV !!

Comment donc identifier l'index dataset correspondant a l'index DGV ???

7 réponses

Messages postés
41
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
30 octobre 2008
1
J'ai le même problème pour le tri . Quelqu'un a t-il une solution ??




Pour la suppression (si aucun tri n'a été effectué)


Lorsque tu supprimes une ligne dans le gridview, supprime la aussi du dataset :



Dataset.Tables[0].Rows.RemoveAt(index);



Dataset.AcceptChanges();
Messages postés
41
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
30 octobre 2008
1
L'index correspondant à l'index de la ligne du datagridview.
Je crois que qu'un dataview peut gérer la correspondance dataset/datagridview mais pour la mise en oeuvre (?)


Binding source :

DataView nom_DV = new DataView(Nom_dataset.Tables[0]);


nom_datagridview.datasource = nom_DV;


 


Si tu trouves une solution pour les index, pourras-tu la poster stp?
Merci
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
3
J'investigue du coté de DataBoundItem
Mais sans grand succes actuellement

Mais comment fais tu un delete dans le DGV ?
Mois je fais directement le Delete dans le Datatable : et le DGV suit souf que les index sont décalés car row est physiquement supprimé du DGV tandis qu'il n'est que logiquement supprimé de la DataTable
Messages postés
41
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
30 octobre 2008
1
Delete : la ligne reste dans le dataset et est marquée pour suppression

Remove ou RemoveAt : la ligne est immédiatement supprimée
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
3
Tu est certaine que tu parle bien d'un datagridview ?


Chez moi, je n'ai ni de methode delete pour un row

Par contre tu m'a donné la voie de la solution
Si je fais DGV.Rows.Remove(myRow); il la supprime effectivement

Et le row correspondant du DS est toto ma tiquement marqué deleté (trié ou pas trié)

Mais attention pour un Insert ca marche pas, IL FAUT passer par la datatable


 
Messages postés
41
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
30 octobre 2008
1
Je parle bien d'un datagridview.

Tu identifies la ligne que tu veux supprimer dans le DGV. tu la supprimes comme tu viens de le trouver : DGV.Rows.Remove(myRow);
Tu supprimes cette ligne dans la DataTable (DataSet.Tables[TaTable])
RemoveAt : supprime la ligne dans le DATASET lié au datagridview.

???

Qu'appelles-tu DS ? et DataTable ? la DataTable ne fait elle pas partie d'un dataset ?
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
3
Tu a bien raison, la datatable appartient a un dataset et c'est bien la datatable qui est liée au DGV

Cependant quand tu fais remode dans le DGV le row est marqué deleted dans la datatable : c'est fort utile pour faire l'update de la DB apres

DONC : Inutile de l'effacer aussi

Tu peux effectuer les changements en faisant AcceptChange