begin process at 2008 05 17 14:54:46
1 174 093 membres
211 nouveaux aujourd'hui
13 974 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Mise à jour d'un dataGridView [ Base de données / Autre ] (KiwiCH)

Mise à jour d'un dataGridView le 09/05/2008 10:24:40

KiwiCH
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:
[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;
        } [/code]

[code]
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();
        }
[/code]

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 !

Meilleures salutations

Re : Mise à jour d'un dataGridView le 09/05/2008 11:03:28

coq
(Admin CS)
Salut,

Déjà, tu devrais jeter un oeil au concept de requêtes paramétrées...



/*
coq
MVP Visual C#
CoqBlog
*/

Re : Mise à jour d'un dataGridView le 09/05/2008 11:12:14

KiwiCH
Le client arrive à 15h, j'ai pas vraiment le temps de tout recodé, et pour ce qu'il doit faire c'est pas grave. De plus, ce n'est pas mon problème :/

Re : Mise à jour d'un dataGridView le 09/05/2008 12:19:22

bubbathemaster
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.

Re : Mise à jour d'un dataGridView le 09/05/2008 12:31:27

KiwiCH
Parceque c'est une eddition de quantité par rapport à un prix et non un ajout de ligne


Classé sous : code, jour, add, dt, datatable

Participer à cet échange

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS