Transfert de donnée d'une datagridview à une autres F1, F2
Résolu
geralson
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
geralson Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
geralson Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Transfert de donnée d'une datagridview à une autres F1, F2
- Whatsapp transfert discussion - Accueil - WhatsApp
- Transfert de mail - Guide
- Service de transfert intelligent en arrière plan ✓ - Forum Windows 10
- Transfert d'appel ooredoo - Forum Samsung
- Please press del or f2 to enter uefi bios setting - Forum BIOS
13 réponses
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
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
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
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
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
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
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)
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)
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()
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
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);