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

VB.NET Discussion :

datagridview avec un combobox comme foreign key


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut datagridview avec un combobox comme foreign key
    Salut tout le monde
    je suis un étudiant et j'ai projet de stage pour le moment

    j'ai 2 tables
    Produit(codeProduit, designationPro,...,CodeCategorie)
    Catégorie(CodeCategorie,DesignationCat)

    Mon problème c'est que je veux faire une mise a jour des produit sur une datagridview et je veux que la colonne Codecategorie sois un combobox remplis par les valeur de la table Catégorie

    et ca sera agréable si les valeurs affichés Dans le combobox sois la désignation du catégorie et les valeurs retourné sois le code (question du displayMember et valueMember)

    Merci de m'aider c'est très important pour moi

  2. #2
    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
    Fais une colonne de type DataGridViewComboBoxColumn avec les propriétés suivantes :
    - DataSource = la table des catégories
    - DisplayMember = la colonne qui contient le nom de la catégorie (par exemple "CATEGORIE_NOM")
    - ValueMember = la clé primaire de la catégorie (par exemple "CATEGORIE_ID")
    - DataPropertyName = la clé étrangère de Produit vers Categorie (par exemple "PRODUIT_CATEGORIE_ID")

    Et ça devrait marcher comme tu veux...

  3. #3
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    salut tomlev et merci pour ta réponse

    avec ton aide j'ai réussis a afficher un combobox remplis par les valeurs des catégorie mais il ya encore un problème c'est que les combobox ont pas des valeurs sélectionnés par défaut or moi je désire que le combobox contiendra une valeur sélectionné correspondant au catégorie du produit associé
    autrement dit si le produit1 appartient à la categorie "B" alors là le combobox doit avoir une valeur sélectionné qui vaut "B"

    (j'espère que vous m'avez compris =P)

    voila mon code
    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
     
            Dim con As New SqlClient.SqlConnection("Data Source=MRVBOY-PC\SQLEXPRESS;Initial Catalog=test;Integrated Security=True")
            Dim cmd As New SqlClient.SqlCommand("select * from produit", con)
            Dim da As New SqlClient.SqlDataAdapter(cmd)
            Dim ds As New DataSet
            da.SelectCommand = cmd
            da.Fill(ds, "P")
            cmd.CommandText = "select * from categorie"
            da.Fill(ds, "C")
            ds.Relations.Add("FK_P_C", ds.Tables("C").Columns("categorie"), ds.Tables("P").Columns("categorie"))
            DataGridView1.DataSource = ds.Tables("P")
            Dim col1 As New DataGridViewComboBoxColumn
            col1.DataSource = ds.Tables("C")
            col1.DisplayMember = ds.Tables("C").Columns(1).ColumnName
            col1.ValueMember = ds.Tables("C").Columns(0).ColumnName
            col1.DataPropertyName = "FK_produit_categorie"
            DataGridView1.Columns.Add(col1)
    la propriété DataPropertyName je l'ai pas bien compris a quoi sert, j'ai lui affectée le nom de la clé étrangère de la table catégorie dans ma base de donnés

  4. #4
    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
    Citation Envoyé par mohcine- Voir le message
    la propriété DataPropertyName je l'ai pas bien compris a quoi sert, j'ai lui affectée le nom de la clé étrangère de la table catégorie dans ma base de donnés
    DataPropertyName, c'est le nom de la propriété dont la valeur est représentée dans cette colonne, c'est commun à tous les types de colonne (text, combo, checkbox, etc...)

    En fait je m'aperçois que je me suis mal exprimé dans ma première réponse : ce n'est pas le nom de la contrainte de clé étrangère, mais le nom de la colonne de clé étrangère (la colonne de Produit qui contient un ID de catégorie)

  5. #5
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Merci énormément tomlev enfin ca marché
    mais il reste un tout petit problème c'est que j'ai deux colonne catégorie une qui vienne de la table produit via datasource et l'autre que j'ai crée celle du combobox
    j'ai essayer de sélectionner que le code et la désignation dans la clause select du sqlcommande mais là le dataPropertyName n'as pas marché
    ya t'il une solution pour qu il ne saffiche que la colonne categorie avec le combobox ? Merci encore un fois

  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
    Je pense que c'est parce que le DataGridView crée automatiquement les colonnes. Essaie de mettre la propriété AutoGenerateColumns à false (si je me souviens bien il faut le faire dans le code, cette propriété n'apparait pas dans le designer ni dans l'Intellisense)

  7. #7
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Bon ce que j'ai fait c'est de mettre la propriété visible = false de la colonne indésirable et ca me débrouille pour l'instant

    Merci infiniment tomlev pour ton aide, c'est résolu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2012, 16h02
  2. Datagridview avec des combobox dynamique
    Par gnomathibus dans le forum Windows Forms
    Réponses: 8
    Dernier message: 21/07/2010, 09h19
  3. uniqueidentifier comme foreign key
    Par CUCARACHA dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/12/2007, 13h25
  4. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  5. pbm avec les foreigns keys.....
    Par j_bonc dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/06/2004, 10h23

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