IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

c# gérer un datagridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut c# gérer un datagridview
    bonjour, me voila encore une fois confronté a un soucis, normal je débute.

    Mes questions sont très simple et basic !

    1) Les données de mon datagridview peuvent être modifiées par l'utilisateur, exemple s'il change une référence comment faire pour attribuer le changement dans la base de donnée ?

    exemple ? lien explicatif ? conseil ?

    2) J'ai crée un bouton dans la colonne statut mais comment appeler ce bouton ?

    J'aimerai en faite exécuter une requête toute simple pour dire que la commande est effectué

    Exemple:
    update commande set co_sta=1 where co_ref="test";




    merci de votre aide et de votre patience.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    a titre d'info le bouton est: DataGridViewButtonColumn

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ton datagridview, tu le remplis "manuellement", ou il est lié à une source de données via la propriété DataSource ? S'il est lié, quelle est la source de données ? Une DataTable ? Une liste d'objets ?

    Tu ne donnes pas assez d'infos pour qu'on puisse t'aider...

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2004
    Messages : 157
    Par défaut
    Tout dépend de ta db mais si on suppose que tu travailles en access,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    using System.Data.OleDb;
     
    int intCount = 0;
    OleDbCommand cmd = new 
    OleDbCommand("MaConnectionString","MaCommandeSql");
    intCount  = cmd.ExecuteNonQuerry();
    intCount étant le nombre d'enregistrement affecté.

    si tu utilises sqlServer tu remplaces OleDb par SqlClient... (je le fais de tête alors ne te focalise pas sur le nom) et pour la command c'est sqldbcommand

    pour les modifs de ta grid, si tu as utilisé un adaptater :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataSet ds = new DataSet();
    OledbDataAdapter adapter = new OledbDataAdapter("MaCommandeSql","sqlQuerry);
    adapter.Fill(ds);
    si tu as mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    adapter.Update(ds)
    perso je n'ai pas utilisé cette commande depuis longtemps car j'utilise les dbcommand alors test avant.



    ps : je viens de voir la réponse de tomlev c'est vrai t'es pas obligé d'avoir utilisé un dataset.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    voici le code qui me permet d'avoir la source de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                    MySqlDataAdapter adapter_commande_attente = new MySqlDataAdapter("SELECT co_ref, co_fich, co_dat, co_qte, co_del, co_com FROM commande WHERE co_sta=0 ORDER BY co_dat DESC", maconnexion);
                    MySqlDataAdapter adapter_commande_termine = new MySqlDataAdapter("SELECT co_ref, co_fich, co_dat, co_qte, co_del, co_com FROM commande WHERE co_sta=1 ORDER BY co_dat ASC LIMIT 10", maconnexion);
     
                    DataSet dataset_commande = new DataSet();
                    adapter_commande_attente.Fill(dataset_commande, "commande_attente");
                    DataSet dataset_termine = new DataSet();
                    adapter_commande_termine.Fill(dataset_commande, "commande_termine");
     
                    DataView MonDataView = dataset_commande.Tables["commande_attente"].DefaultView;
                    dataGridView_attente.DataSource = MonDataView;
                    DataView MonDataView2 = dataset_commande.Tables["commande_termine"].DefaultView;
                    dataGridView_termine.DataSource = MonDataView2;
    base de donnée: MySql

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu veux que le click sur le bouton enregistre juste la ligne en cours, c'est ça ?

    Alors, en fait, quand un DataGridView est lié à une DataTable (ou une DataView), la DataTable est automatiquement mise à jour avec les changements faits dans le DataGridView, il n'y a rien à faire de particulier. Pour mettre que les changements dans la DataTable soient effectués sur la base de données, il faut utiliser la méthode DbDataAdapter.Update. En général on le fait pour une table entière, mais on peut aussi le faire sur une ligne en particulier (ou plusieurs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void dataGridView_attente_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex >= 0 && e.ColumnIndex == columnButtonStatut.Index)
        {
     
            // obtenir la DataRow correspondant à la ligne courante du DataGridView
            DataRowView drv = dataGridView_attente.CurrentRow.DataBoundItem as DataRowView;
            adapter_commande_attente.Update(new DataRow[] { drv.Row });
        }
    }
    EDIT: apparemment tu n'as pas défini les UpdateCommand, InsertCommand et DeleteCommand de tes adapteurs. Tu peux les faire générer automatiquement en ajoutant ça à l'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter_commande_attente);

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    merci de m'aider tomlev mais je vais repréciser ce que je demande pour que l'on soit bien d'accord.


    dans mon datagridview je veux faire des modifications directement dessus. Tu me dis que c'est très simple en utilisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private void dataGridView_attente_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex >= 0 && e.ColumnIndex == columnButtonStatut.Index)
        {
     
            // obtenir la DataRow correspondant à la ligne courante du DataGridView
            DataRowView drv = dataGridView_attente.CurrentRow.DataBoundItem as DataRowView;
            adapter_commande_attente.Update(new DataRow[] { drv.Row });
        }
    }
    de ce faite avec le code ci-dessus je peux faire mes modifications avec une écriture sur ma base de donnée automatiquement ?
    c'est bien sa ?


    De plus a propos du "click" mon bouton qui se situe sur chaque ligne, j'aimerai lors de son clique effectuer une requete sql afin de faire passer cette commande en attente en terminé. La je n'ai pas compris comment faire.

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2004
    Messages : 157
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                    MySqlDataAdapter adapter_commande_attente = new MySqlDataAdapter("SELECT co_ref, co_fich, co_dat, co_qte, co_del, co_com FROM commande WHERE co_sta=0 ORDER BY co_dat DESC", maconnexion);
    donc col sta n'est pas présente vu que dans ton select tu ne la reprends pas.
    La colonne dans la clause where n'est pas obligatoirement importé.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    ouaip jlai zapé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] DataGridView, gérer cases à cocher
    Par tssi555 dans le forum VB.NET
    Réponses: 15
    Dernier message: 20/01/2009, 09h19
  2. Réponses: 6
    Dernier message: 31/07/2007, 10h13
  3. Réponses: 3
    Dernier message: 02/05/2007, 16h32
  4. gérer le copie coller sur un Datagridview
    Par wodel dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/05/2007, 19h55
  5. Réponses: 2
    Dernier message: 23/08/2006, 20h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo