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

Accès aux données Discussion :

[C#][2.0] DataRelations, Datagrid et Combobox


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut [C#][2.0] DataRelations, Datagrid et Combobox
    Bonjour,
    après avoir cherché en vain un peu partout solution à mon problème, j'en fait appel à vous. Je dispose de :
    -une base SQL Express (pilotes de connexion OleDB)
    -une table de matières (inox, acier, fibre de verre etc)
    -une table article contenant une clé étrangère vers la table des "matières"
    Un article est composé d'une seule matière mais cette matière peut composer d'autres articles.
    Sur mon form j'ai un datagrid des textboxes et un combobox.
    Le but est de sélectionner un article affiché dans le datagrid et mettre à jour les textboxes (jusqu'ici ça marche) mais aussi le combobox matière (remplissage avec toutes les valeurs de la table matières ET sélection de la matière de l'article).
    Le problème c'est que le combobox se remplit bien mais je n'ai pas de sélection de la matière liée, et ce malgré la relation crée entre les deux tables.
    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
     
    OleDbConnection oleDbConnex=
                    new OleDbConnection("Provider=SQLNCLI;Server=" + "server\\SQLExpress" + ";Database=" + "EDV" + ";Trusted_Connection=" + "Yes" + ";");
                DataSet ds = new DataSet();
                OleDbCommand cmd = new OleDbCommand("select * from EDV_ARTICLE", oleDbConnex);
                OleDbDataAdapter da = new OleDbDataAdapter();
                da.SelectCommand = cmd;
                da.Fill(ds,"ARTICLE");
                cmd.CommandText = "SELECT * FROM EDV_MATTER";
                da.SelectCommand = cmd;
                da.Fill(ds, "MATTER");
                oleDbConnex.Close();
                DataRelation dr = new DataRelation("dr",               
                    ds.Tables["MATTER"].Columns["MAT_L_MATTER"],
                    ds.Tables["ARTICLE"].Columns["ART_N_MATTER"]);
                ds.Relations.Add(dr);
                this.gridArticle.DataSource = ds;
                this.gridArticle.DataMember = "ARTICLE";
                this.tbART_L_ARTICLE.DataBindings.Add(new Binding("Text", ds, "ARTICLE.ART_L_ARTICLE"));
                this.tbART_NAME.DataBindings.Add(new Binding("Text", ds, "ARTICLE.ART_NAME"));
    this.cbMAT_NAME.DataSource = ds.Tables["MATTER"];

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Points : 451
    Points
    451
    Par défaut
    Bonjour,
    Essaie le bindingsource
    Exemple en VBnet(désole je ne connais pas C#) mais le principe reste le même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        BSDgv = New BindingSource
        BSCombo = New BindingSource
        BSdgv.DataSource = dataset
        BSdgv.DataMember = "tableparent"
        BSCombo.DataSource = BSdgv
        BScombo.DataMember = "NomDeLaRelation"
        DGV.DataSource = BSdgv
        combo.DataSource = BSdgv
        combo.displaymember = "colonne"
        combo.valuemember = "Colonne"
    Le déplacement dans le datagrig affiche les enregistrements enfants dans le combo
    (Vérifier la syntaxe car j'ai tapé de mémoire)
    Bon boulot
    Jean

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Hello Jean,
    merci beaucoup pour ta réponse très détaillée.
    J'ai adapté ton code à ma situation mais à priori ça coince sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BScombo.DataMember = "NomDeLaRelation"
    En effet, le compilateur me dit "La propriété DataMember 'dr' est introuvable dans le DataSource." (dr étant le nom de ma relation que j'ai bien sûr déclarée et ajoutée dans le Dataset)
    Je continue à chercher dans la voie que tu as ouverte.
    Lionel

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 19
    Points
    19
    Par défaut DataRelations, Datagrid et Combobox
    bonjour EFCAugure,

    As tu finalement trouvé une solution pour ce problème? moi aussi, j'ai le même problème c'est chiant. j'attends ta réponse, merci d'avance.

Discussions similaires

  1. Datagrid et combobox : clic 2 fois
    Par Syrrus dans le forum Windows Forms
    Réponses: 7
    Dernier message: 24/12/2010, 16h42
  2. Re-actualiser DataGrid et combobox
    Par moukit233 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/08/2009, 14h40
  3. datagrid et combobox
    Par mapmip dans le forum ASP.NET
    Réponses: 2
    Dernier message: 14/03/2007, 18h48
  4. Datagrid et combobox avec deux datasource différents
    Par RaelRiaK dans le forum VB.NET
    Réponses: 9
    Dernier message: 07/02/2007, 09h20

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