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 :

probleme binding datatables


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut probleme binding datatables
    Bonjour a tous,

    J'ai un soucis de binding avec une datatable et les elements de ma forme.

    Voila j'ai une datatable "Contact" qui contient des éléments comme:
    - Nom ("ContactNom")
    - Prenom ("ContactPrenom")
    - Adresse ("ContactAdresse")
    - telephone ("ContactTel")
    - mail (ContactMail")

    Sur ma form j'ai une listview avec deux colonnes (Nom et Prénom) pour afficher les enregistrements de ma datatable "Contact".
    J'ai egalement un certain nombre de textbox pour afficher les éléments des differents champs de mes enregistrement contenu dans la datatable "Contact".

    Ma question:
    Comment binder ma listview avec la table "contact" pour afficher les enregistrement contenus dans celle-ci et surtout comment en fonction de l'enregistrement selectionné dans la listview, afficher les données correspondantes (telephone, mail...) dans les texbox appropriées?

    Je suis débutant en C# et je galère sévère avec ces histoires de binding....

    Si quelqu'un pouvait m'aider, je lui en serai trsè reconnaissant

    merci

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Points : 268
    Points
    268
    Par défaut
    Quelle est la clé primaire de ta table? tu as mis un ID? ou c'est le nom (Pas très propre si deux contacts ont le même nom)?

  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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    C'est du WinForms ? Le contrôle ListView de WinForms ne supporte pas le data binding, il faut gérer ça manuellement avec les évènements... Si tu peux, utilise plutôt un DataGridView

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    salut,

    Oui ma datatable a une clé primaire (ContactID) et je suis en Winform

    Pour ce qui est du DatagridView, je vais tester avec ça... mais ne connaissant pas ce control je risque de galerer

    merci pour cette piste

  5. #5
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par waspy59 Voir le message
    Pour ce qui est du DatagridView, je vais tester avec ça... mais ne connaissant pas ce control je risque de galerer
    C'est facile, tu affectes ta DataTable à la propriété DataSource du DataGridView, et ça marche tout seul... après tu peux customiser un peu les colonnes et le comportement avec le designer

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par Tomlev
    C'est du WinForms ? Le contrôle ListView de WinForms ne supporte pas le data binding,
    Salut Tomlev
    Tout a fait d'accord pour recommander le DataGridView

    Par contre est-tu certain de ce que tu dis pour le ListView ?
    Tu ne confond pas avec le CheckedListBox ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  7. #7
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par olibara Voir le message
    Par contre est-tu certain de ce que tu dis pour le ListView ?
    Tu ne confond pas avec le CheckedListBox ?
    Certain... Vérifie si tu veux, il n'y a pas de propriété DataSource
    C'est juste un wrapper pour le contrôle Win32
    C'est bien dommage d'ailleurs, parce que visuellement je trouve le ListView plus sympa que le DataGridView...

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Effectivement !
    C'est le ListBox qui a un DataSource
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Bonjour à vous,

    Bon j'ai ecouté vos conseils et j'ai testé le datagridview... ça fonctionne nikel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    dataGridView1.AutoGenerateColumns = false;
                            DataGridViewColumn column1 = new DataGridViewTextBoxColumn();
                            column1.DataPropertyName = "ContactNom";
                            column1.HeaderText = "Nom";
                            column1.Width = 150;
                            DataGridViewColumn column2 = new DataGridViewTextBoxColumn();
                            column2.DataPropertyName = "ContactPrenom";
                            column2.HeaderText = "Prenom";
                            column2.Width = 150;
                            dataGridView1.Columns.Add(column1);
                            dataGridView1.Columns.Add(column2);
                            dataGridView1.DataSource = dataset1.Tables[1];
    Par contre je bloque encore pour l'affichage dans les textbox des champs de ma datatable en fonction de la row selectionnée dans le datagridview.

    Une idée?

  10. #10
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par waspy59 Voir le message
    Par contre je bloque encore pour l'affichage dans les textbox des champs de ma datatable en fonction de la row selectionnée dans le datagridview.
    Une idée?
    Tu va devoir jouer avec les event du DagridView
    Recuperer l'info du row concerné
    Et afficher ces infos dans tes textbox
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  11. #11
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par olibara Voir le message
    Tu va devoir jouer avec les event du DagridView
    Pas forcément...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    textBoxNom.DataBindings.Add("Text", dataset1.Tables[1], "ContactNom");
    textBoxPrenom.DataBindings.Add("Text", dataset1.Tables[1], "ContactPrenom");
    (ça peut aussi se faire via le designer)

    Avec ça, ça tient compte automatiquement de la ligne sélectionnée et ça met à jour les TextBox en conséquence

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    bonsoir,

    j'avais pensé au binding de mes textbox que le propose Tomlev. Par contre ce binding je le fais a l'initialisation de la form ou bien sur un evenement du datagridview (evenement click?)?

    merci

  13. #13
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par waspy59 Voir le message
    Par contre ce binding je le fais a l'initialisation de la form ou bien sur un evenement du datagridview (evenement click?)?
    A l'initialisation (tu peux le faire dès que ta DataTable est créée en fait)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Bonjour à tous,

    Bon j'ai testé le binding de mes textbox a l'initialisation de mon dataset1, en utilisant l'exemple de Tomlev

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    textBoxNom.DataBindings.Add("Text", dataset1.Tables[1], "ContactNom");
    la textbox affiche bien le champ " ContactNom" de ma datatable "Contact", par contre c'est le premier enregistrement de cette datatable

    Par exemple si j'ai 3 Contacts dans ma datatable "Contact", j'ai bien 3 lignes dans mon datagridview mais quelquesoit l'enregistrement selectionné dans le datagridview, ma textbox affiche le champ "ContactNom" du premier enregistrement......

    J'ai merdé ou?

  15. #15
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    OK, alors en fait il va falloir passer par une BindingSource...

    Crée avec le designer une BindingSource, sélectionne la table que tu veux comme DataSource, et utilise cette BindingSource comme DataSource du DataGridView et des bindings :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    dataGridView1.DataSource = bindingSource1;
    ...
     
    textBoxNom.DataBindings.Add("Text", bindingSource1, "ContactNom");
    textBoxPrenom.DataBindings.Add("Text", bindingSource1, "ContactPrenom");
    Là ça devrait marcher

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Ca fonctionne ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    bs1 = new BindingSource();
                            bs1.RaiseListChangedEvents = false;
                            bs1.DataSource = dataset1.Tables[1];
     
                            dataGridView1.AutoGenerateColumns = false;
                            DataGridViewColumn column1 = new DataGridViewTextBoxColumn();
                            column1.DataPropertyName = "ContactNom";
                            column1.HeaderText = "Nom";
                            column1.Width = 150;
                            DataGridViewColumn column2 = new DataGridViewTextBoxColumn();
                            column2.DataPropertyName = "ContactPrenom";
                            column2.HeaderText = "Prenom";
                            column2.Width = 150;
                            dataGridView1.Columns.Add(column1);
                            dataGridView1.Columns.Add(column2);
                            dataGridView1.DataSource = bs1;
                                comboBox1.DataBindings.Add(new Binding("Text", bs1, "ContactSexe", true));
                                textBox4.DataBindings.Add(new Binding("Text", bs1, "ContactTitre", true));
                                textBox5.DataBindings.Add(new Binding("Text", bs1, "ContactNom", true));
                                textBox6.DataBindings.Add(new Binding("Text", bs1, "ContactPrenom", true));
                                textBox7.DataBindings.Add(new Binding("Text", bs1, "ContactTelephone", true));
                                textBox8.DataBindings.Add(new Binding("Text", bs1, "ContactPoste", true));
                                textBox9.DataBindings.Add(new Binding("Text", bs1, "ContactPortable", true));
                                textBox10.DataBindings.Add(new Binding("Text", bs1, "ContactMail", true));
     
     
                            bs1.RaiseListChangedEvents = true;
                            bs1.ResetBindings(false);
    Peux tu passer le sujet en [Resolu]

    Merci pour ton aide

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

Discussions similaires

  1. probleme avec datatable
    Par oussamus dans le forum Seam
    Réponses: 0
    Dernier message: 01/12/2008, 14h49
  2. Probleme avec datatable imbriqués
    Par tomy29 dans le forum JSF
    Réponses: 2
    Dernier message: 14/08/2008, 11h29
  3. Probleme binding navigator
    Par theoffss dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/07/2008, 15h35
  4. [C#][2.0] Probleme Binding d'un ToolTip
    Par vinsou___ dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/07/2006, 19h11

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