Identifier row dataset avec row DGV

olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 4 mars 2008 à 14:34
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 4 mars 2008 à 17:15
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

Amelie_29 Messages postés 41 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 30 octobre 2008 1
4 mars 2008 à 16:16
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();
0
Amelie_29 Messages postés 41 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 30 octobre 2008 1
4 mars 2008 à 16:24
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
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
4 mars 2008 à 16:38
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
0
Amelie_29 Messages postés 41 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 30 octobre 2008 1
4 mars 2008 à 16:44
Delete : la ligne reste dans le dataset et est marquée pour suppression

Remove ou RemoveAt : la ligne est immédiatement supprimée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
4 mars 2008 à 16:58
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


 
0
Amelie_29 Messages postés 41 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 30 octobre 2008 1
4 mars 2008 à 17:07
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 ?
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
4 mars 2008 à 17:15
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
0
Rejoignez-nous