cs_KiwiCH
Messages postés3Date d'inscriptionvendredi 9 mai 2008StatutMembreDernière intervention 9 mai 2008
-
9 mai 2008 à 10:24
cs_KiwiCH
Messages postés3Date d'inscriptionvendredi 9 mai 2008StatutMembreDernière intervention 9 mai 2008
-
9 mai 2008 à 12:31
Bonjour,
J'ai ici un dataGridView qui ne fonctionne pas comme désiré. Je m'explique:
J'ai une colonne "quantité", qui une fois changé doit mettre à jour la base de donnée et prendre(afficher) les nouvelles valeurs.
J'ai 2 problèmes:
- Si je change qu'une ligne -> il ne fait rien.
- Si je change les 2 lignes présente -> il attribu la premiere valeurs que je rentre au 2 lignes.
Voici le code:
public frmEditRecette()
{
InitializeComponent();
// bind des données
DataTable dt = new DataTable();
DataTable updatedData = new DataTable();
dt.Columns.Add("RecetteId", typeof(int));
dt.Columns.Add("Composant", typeof(string));
dt.Columns.Add("Quantity", typeof(int));
dt.Rows.Add(1, "Comp1", 2);
dt.Rows.Add(1, "Comp2", 1);
dt.Rows.Add(1, "Comp3", 5);
dt.AcceptChanges();
this.kryptonDataGridView1.DataSource = dt;
}
private void toolStripButton5_Click(object sender, EventArgs e)
{
dataBase mydatabase = new dataBase("localhost", "theproject", "root");
// on récupère la DataTable source et on prends uniquement les lignes mises à jour
DataTable dt = this.kryptonDataGridView1.DataSource as DataTable;
DataTable updatedData = dt.GetChanges(DataRowState.Modified);
if (null == updatedData)
{
return;
}
// pour chaque ligne mise à jour on fait un UPDATE
bool successAll = true;
foreach (DataRow dr in updatedData.Rows)
{
bool updated = mydatabase.updateAll("UPDATE xdb_recetteComposant SET qt=" + dr["qt"].ToString() + " WHERE recette= " + _idRecette.ToString() + ";");
if (updated)
{
// l'update à réussi, on met à jour le statut de la ligne
dr.AcceptChanges();
}
successAll = successAll && updated;
}
// message utilisateur en fonction de si toutes les mises à jour ont réussi ou non
if (successAll)
{
MessageBox.Show("La mise à jour a été effectuée", "Mise à jour des quantités", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("La mise à jour n'a pas pu être effectuée", "Mise à jour des quantités", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
dataBaseReload();
}
Le client vient chercher son logiciel à 15h et c'est le dernier problème que j'ai, donc si vous avez une solution je suis plus que prenneur !
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 9 mai 2008 à 12:19
Pourquoi tu ne te sers pas de l'évènement RowsAdded de la datagridview ?
A chaque row ajoutée tu maintiens une liste avec les infos de la dgv, au clique tu deroule cette liste avec des queries UPDATE.