Transfert de données d'une datagridview à une autre dans de différentes formes

geralson - 30 avril 2013 à 13:16
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 6 mai 2013 à 17:55
Bonjour,
J'ai deux datadridview ( datagridview1 vide dans Form1 et datagridview2 affichant quelques éléments de la DB dans Form2).
Un bouton "ajouter" sur Form1 et un bouton "selectionner" sur Form2.


Mon désire est que si je clique sur un bouton ajouter dans Form1, j'ouvre Form2. Lorsque je selectionne une ligne de datagridview2 et que je clique sur le bouton "selectionner " cette ligne s'affichera dans la datagridview1 de Form1 et disparaitra dans datagridview2 (Form2).

Même si je clique encore sur "Ajouter" j'arrive à faire la même chose.

Merci pour votre aide

3 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
30 avril 2013 à 13:44
Bonjour,

la réponse dépend en partie de la façon dont tu remplis le datagridview.

Perso, je ferai deux List<T> bindée sur les datagridview (voir ici) et je ferai des Add et des Remove d'une liste à l'autre en rafraichissant le binding.



Whismeril
0
Merci beaucoup pour ton aide mais j'ai un un autre pb. j'arrive à remplir la seconde datagridview et à supprimer ls elements selectionnés de la première datagrideview. mais je lorsque je clique à nouveau sur ajouter je retrouve les élements dans la première datagridview. Que faire?


J'ai try ceci
merci pour vos réponses mais c'est pas vraiment ca mon probleme. quand je selectionne un élement il s'affiche. Mais quand je sélectionne un autre l'ancien est écrasé. Or je veux remplir la datagridview Vente2.grid
Voici un bout de code de la selection

//Vente2 est un forme

int id =int.Parse(dataGridView1.SelectedRows[0].Cells[0].Value.ToString());
GooglaOneErpEntities4 ab = new GooglaOneErpEntities4();

var query = from b in ab.Taxes
where b.idTaxes == id
select new { b.nomTaxe, b.codeTTaxe, b.actif };
var users = query.ToList();
Vente2.grid.DataSource = users;
ab.SaveChanges();
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);


mAIS LA SECONDE SELECTION éCRASE LA PREMIèRE

Merci pour votre aide
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
6 mai 2013 à 17:55
Bonsoir, ce que je crois comprendre de ton explication et de ton code, c'est que quand tu ajoutes une ligne vers vente2, ça marche.
Quand tu veux mettre une seconde ligne vers vente2, la première est remplacée par la seconde.

Vu ton code c'est normal

var query = from b in ab.Taxes //je suppose que ab.Taxes est ta source de données initiale
where b.idTaxes == id 
select new { b.nomTaxe, b.codeTTaxe, b.actif }; 
var users = query.ToList(); // ici tu crées une liste toute neuve de 1 élément
Vente2.grid.DataSource = users; //là cette liste devient le datasource, la grille n'affiche donc que cet enregistrement
ab.SaveChanges(); 
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); 


Ce que je pensais était plutôt de ce genre:
//au début
List<Taxe>() liste1 = (from b in ab.Taxes //je connais pas le type de Taxes alors pour la suite je prends Taxe
             select new { b.nomTaxe, b.codeTTaxe, b.actif }).ToList<Taxe>();//au début la liste1 contient tous les éléments


List<Taxe>() liste2 = new List<Taxe>(); //liste2 est vide;


Grille1.DataSource = liste1;
Grille2.DataSource = liste2;


//dans le bouton ajouter
Taxe aBouger = liste1[numéro de la ligne sélectionnée de grille1];
liste2.Add(aBouger);
liste1.Remove(aBouger);

//et refresh des bindings



Whismeril
0
Rejoignez-nous