Transfert de donnée d'une datagridview à une autres F1, F2
Résolu/Fermé
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
-
30 avril 2013 à 13:43
geralson Messages postés 14 Date d'inscription mardi 30 avril 2013 Statut Membre Dernière intervention 20 juin 2013 - 8 mai 2013 à 14:01
geralson Messages postés 14 Date d'inscription mardi 30 avril 2013 Statut Membre Dernière intervention 20 juin 2013 - 8 mai 2013 à 14:01
A voir également:
- Transfert de donnée d'une datagridview à une autres F1, F2
- We transfert - Guide
- Transfert de mail - Guide
- Transfert d'appel ooredoo - Forum Mobile
- Code Pour Renvoi D'appel Et Mesage - Forum telephonie fixe
- Transfert d'appel mobilis ✓ - Forum telephonie fixe
13 réponses
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
1 mai 2013 à 16:45
1 mai 2013 à 16:45
Bonjour, passez en argument de Form2 le Form1 pour pouvoir y accéder en retour et dans Form1 mettez en public son datagridview pour y accéder à partir de Form2
tsri_badr_esgi
Messages postés
524
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
26 mai 2014
9
Modifié par tsri_badr_esgi le 3/05/2013 à 01:43
Modifié par tsri_badr_esgi le 3/05/2013 à 01:43
les evenement et le delegué servent bien le passage des données entre les form.
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
6 mai 2013 à 16:26
6 mai 2013 à 16:26
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);
Merci pour votre aide
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);
Merci pour votre aide
tsri_badr_esgi
Messages postés
524
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
26 mai 2014
9
6 mai 2013 à 23:57
6 mai 2013 à 23:57
corrige moi si je comprend pas.
alors ce code se situe dans la bouton Selectionner de la Form2.
Vente2 est la Form 1 a la quel tu veut passer les Row pour remplir sa propre grid.
dataGridWiew1 se situe dans Form2 (le source des donée a passer ).
si oui.
comment la form2 connaitre Vente2 .chaque fois tu instancier Vente2 ou quoi vraiment.?
plus de code aide a comprendre.
alors ce code se situe dans la bouton Selectionner de la Form2.
Vente2 est la Form 1 a la quel tu veut passer les Row pour remplir sa propre grid.
dataGridWiew1 se situe dans Form2 (le source des donée a passer ).
si oui.
comment la form2 connaitre Vente2 .chaque fois tu instancier Vente2 ou quoi vraiment.?
plus de code aide a comprendre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
7 mai 2013 à 09:58
7 mai 2013 à 09:58
bjr, oui ce code se trouve ds le bouton "sélectionné " de Form2 et Vente2=Form1; dATAGRIDVIEW1 se situe ds FOrm2 et la source de donnée est la base de donnée.
A chaque fois que je veux ajouter une ligne à la datagridview de Form1 je dois cliquer sur le bouton "ajouter " de Form1. Et dans la datagridview1de la forme vente2 je ne doit plus retrouver les lignes déjà sélectionnées auparavant et qui se trouve dans l'autre datagridview.
Dans "ajouter" j'ai le code suivant:
Form g = new Form2();
g.Show();
Merci encore pour l'intérêt et pour votre aide
A chaque fois que je veux ajouter une ligne à la datagridview de Form1 je dois cliquer sur le bouton "ajouter " de Form1. Et dans la datagridview1de la forme vente2 je ne doit plus retrouver les lignes déjà sélectionnées auparavant et qui se trouve dans l'autre datagridview.
Dans "ajouter" j'ai le code suivant:
Form g = new Form2();
g.Show();
Merci encore pour l'intérêt et pour votre aide
tsri_badr_esgi
Messages postés
524
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
26 mai 2014
9
8 mai 2013 à 08:44
8 mai 2013 à 08:44
il est vraiment defficile a comprendre comment la form 2 connaitre la form 1 dans tes examples mais apparament tu cree une nouvel inctance de Form1 a chaque fois tu clique sur Selectionner(une nouvel reference ) alors c'est normal que un seul row qui est ajouté
en tous cas voila une solution parmi d'autre en utilisant les event et les delegate:
supposant j'ai :
Form1 + Datagridform1+ buttonAjouter.
Form2 + Datagridform2+buttonSelectionner.
Datagridform2 est remplir par une base de donne.
moi j'ai dans cette example quatre columns dans les deux grids.
voila le code de chaque form:
Form1.cs
Form2.cs
<code>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace passingbetweengrids
{
public partial class Form2 : Form
{
public delegate void SendData(object data);
public event SendData Sender;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
// TODO: cette ligne de code charge les données dans la table 'emailDataSet.emails'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
this.emailsTableAdapter.Fill(this.emailDataSet.emails);
}
private void ButtonSelectionner_Click(object sender, EventArgs e)
{
string[] array = new string[4];
array[0]=DatagridForm2.CurrentRow.Cells[0].Value.ToString();
array[1]=DatagridForm2.CurrentRow.Cells[1].Value.ToString();
array[2]=DatagridForm2.CurrentRow.Cells[2].Value.ToString();
array[3] = DatagridForm2.CurrentRow.Cells[3].Value.ToString();
this.Sender(array);
this.Close();
}
}
}
</code
comme j'ai dis il y'a d'autre solution bien sure par example:
creer un autre constructeur dans la form1 qui accepte des parameater comme ce le array dans l'exmple ci-dessus.
mais je t'invite a comprendre les evenement et les delegats.personnelement sauve ma vie dan le passage des infos entre les forms.
happy coding
en tous cas voila une solution parmi d'autre en utilisant les event et les delegate:
supposant j'ai :
Form1 + Datagridform1+ buttonAjouter.
Form2 + Datagridform2+buttonSelectionner.
Datagridform2 est remplir par une base de donne.
moi j'ai dans cette example quatre columns dans les deux grids.
voila le code de chaque form:
Form1.cs
using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace passingbetweengrids { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void ButtonAjouter_Click(object sender, EventArgs e) { Form2 frm2= new Form2(); frm2.Sender += new Form2.SendData(frm2_Sender); frm2.Show(); } void frm2_Sender(object data) { string[] arrayrecu = (string[])data; DatagridForm1.Rows.Add(arrayrecu); } } }
Form2.cs
<code>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace passingbetweengrids
{
public partial class Form2 : Form
{
public delegate void SendData(object data);
public event SendData Sender;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
// TODO: cette ligne de code charge les données dans la table 'emailDataSet.emails'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
this.emailsTableAdapter.Fill(this.emailDataSet.emails);
}
private void ButtonSelectionner_Click(object sender, EventArgs e)
{
string[] array = new string[4];
array[0]=DatagridForm2.CurrentRow.Cells[0].Value.ToString();
array[1]=DatagridForm2.CurrentRow.Cells[1].Value.ToString();
array[2]=DatagridForm2.CurrentRow.Cells[2].Value.ToString();
array[3] = DatagridForm2.CurrentRow.Cells[3].Value.ToString();
this.Sender(array);
this.Close();
}
}
}
</code
comme j'ai dis il y'a d'autre solution bien sure par example:
creer un autre constructeur dans la form1 qui accepte des parameater comme ce le array dans l'exmple ci-dessus.
mais je t'invite a comprendre les evenement et les delegats.personnelement sauve ma vie dan le passage des infos entre les forms.
happy coding
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
8 mai 2013 à 10:25
8 mai 2013 à 10:25
merci bcp pour ton aide je vais le tester de suite
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
8 mai 2013 à 12:02
8 mai 2013 à 12:02
merci beaucoup tsri_badr_esgi je l'ai testé et ca marche .
Mais j'ai un autre souci.
Mon souhait est que lorsque j'ajoute une ligne au datagridview1 de la Form1 je ne dois plus la retrouver dans datagridview2 quand je clique sur le boutton Ajouter de la form1. ie elle doit etre suprimé ou cachée.
Merci encore pour ton aide
Mais j'ai un autre souci.
Mon souhait est que lorsque j'ajoute une ligne au datagridview1 de la Form1 je ne dois plus la retrouver dans datagridview2 quand je clique sur le boutton Ajouter de la form1. ie elle doit etre suprimé ou cachée.
Merci encore pour ton aide
tsri_badr_esgi
Messages postés
524
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
26 mai 2014
9
8 mai 2013 à 12:47
8 mai 2013 à 12:47
tu veut affecter aussi la base du donnée et supprime le Row qui étais juste ajouté a la datagrid du Form1?
Si oui:
En general il faut juste crée une requête SQL qui vas affecter la base du donnée (au niveau de la bouton Selectionner avant la fermeture du Form2)
j'ai noté ce ligne dans ta deuxieme reponse:
GooglaOneErpEntities4 ab = new GooglaOneErpEntities4();
tu utilise EntityFramework ou LinqToSql Entities? (.dbml ou .edmx)
Si oui:
En general il faut juste crée une requête SQL qui vas affecter la base du donnée (au niveau de la bouton Selectionner avant la fermeture du Form2)
j'ai noté ce ligne dans ta deuxieme reponse:
GooglaOneErpEntities4 ab = new GooglaOneErpEntities4();
tu utilise EntityFramework ou LinqToSql Entities? (.dbml ou .edmx)
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
8 mai 2013 à 12:55
8 mai 2013 à 12:55
j'utilise entitéframework, je veux juste supprimer les lignes déja selectionnée dans la datagridview2 (pas ds la base de donnée juste ne plus les voir dans la datagridview2)
tsri_badr_esgi
Messages postés
524
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
26 mai 2014
9
8 mai 2013 à 13:19
8 mai 2013 à 13:19
d'abord,même si on supprime un row . si a chaque fois la form2 est fermé apres l'appui sur la bouton Selectionner,,et quand on click une autre fois sur la bouton ajouter ça va creer une nouvelle form2 qui sera rempli nouvellement avec la base de donnée (car le source n'est pas touché).
mais si on laisse la Form2 ouvert il'ya beaucoup de possibilité.par exemple:
ajouter ces ligne a la bouton selectionner.
et commenter le ligne:
mais si on laisse la Form2 ouvert il'ya beaucoup de possibilité.par exemple:
ajouter ces ligne a la bouton selectionner.
foreach (DataGridViewCell item in DatagridForm2.SelectedCells) { DatagridForm2.Rows.RemoveAt(item.RowIndex); }
et commenter le ligne:
//this.Close()
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
8 mai 2013 à 13:34
8 mai 2013 à 13:34
OUi tu as parfaitement raison. Quand je laisse la form2 ça supprime. Mais les client est roi s'il desire fermer et ajouter une autre ligne tu vois un peu?
Que penses tu de cette idée?
Dans mon boutton ajouter je met ce code:
je crée une liste de la première colonne de de ma datagridview1 et une liste de ma datagridview2
ensuite je parcoure en comparant leurs elements.
Si je trouve qu'un element de datagridview1 == datagridview2 je supprime la ligne correpsondante
Que penses tu de cette idée?
Dans mon boutton ajouter je met ce code:
je crée une liste de la première colonne de de ma datagridview1 et une liste de ma datagridview2
ensuite je parcoure en comparant leurs elements.
Si je trouve qu'un element de datagridview1 == datagridview2 je supprime la ligne correpsondante
geralson
Messages postés
14
Date d'inscription
mardi 30 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
8 mai 2013 à 14:01
8 mai 2013 à 14:01
waiiiiiiiii l'idée à marché. merci beaucoup pour ton aide.
voici un bout de code:
Dans le bouton ajouter
Form g = new vue.Vente.Ajoutertaxe();
g.Show();
List<string> l = new List<string>();
for (int i = 0; i < Ajoutertaxe.t.RowCount; i++)
{
l.Add(Ajoutertaxe.t.Rows[i].Cells[1].Value.ToString());
//liste.Add(new Taxe(7252, "dfgf", "nbhnj", true));
}
if (Vente2.s.RowCount > 0)
{
List<string> le = new List<string>();
for (int k = 0; k < Vente2.s.RowCount; k++)
{
le.Add(Vente2.s.Rows[k].Cells[1].Value.ToString());
//liste.Add(new Taxe(7252, "dfgf", "nbhnj", true));
}
//List<string> li = new List<string>();
for (int j = 0; j < Ajoutertaxe.t.RowCount; j++)
{
for (int i = 0; i < le.Count; i++)
{
if (l[j].Equals(le[i]))
{
//Ajoutertaxe.t.Rows.RemoveAt(0);
Ajoutertaxe.t.CurrentCell = null;
Ajoutertaxe.t.Rows[j].Visible = false;
}
else
{
Ajoutertaxe.t.Update();
}
}
}
Dans le bouton selectionner
Vente2.s.Rows.Insert(0, dataGridView1.SelectedRows[0].Cells[0].Value.ToString(), dataGridView1.SelectedRows[0].Cells[1].Value.ToString(), dataGridView1.SelectedRows[0].Cells[2].Value.ToString(), dataGridView1.SelectedRows[0].Cells[3].Value.ToString());
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
voici un bout de code:
Dans le bouton ajouter
Form g = new vue.Vente.Ajoutertaxe();
g.Show();
List<string> l = new List<string>();
for (int i = 0; i < Ajoutertaxe.t.RowCount; i++)
{
l.Add(Ajoutertaxe.t.Rows[i].Cells[1].Value.ToString());
//liste.Add(new Taxe(7252, "dfgf", "nbhnj", true));
}
if (Vente2.s.RowCount > 0)
{
List<string> le = new List<string>();
for (int k = 0; k < Vente2.s.RowCount; k++)
{
le.Add(Vente2.s.Rows[k].Cells[1].Value.ToString());
//liste.Add(new Taxe(7252, "dfgf", "nbhnj", true));
}
//List<string> li = new List<string>();
for (int j = 0; j < Ajoutertaxe.t.RowCount; j++)
{
for (int i = 0; i < le.Count; i++)
{
if (l[j].Equals(le[i]))
{
//Ajoutertaxe.t.Rows.RemoveAt(0);
Ajoutertaxe.t.CurrentCell = null;
Ajoutertaxe.t.Rows[j].Visible = false;
}
else
{
Ajoutertaxe.t.Update();
}
}
}
Dans le bouton selectionner
Vente2.s.Rows.Insert(0, dataGridView1.SelectedRows[0].Cells[0].Value.ToString(), dataGridView1.SelectedRows[0].Cells[1].Value.ToString(), dataGridView1.SelectedRows[0].Cells[2].Value.ToString(), dataGridView1.SelectedRows[0].Cells[3].Value.ToString());
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);