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 :

Bindind WPF à partir d'un DataSet rempli via une base MySQL


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut Bindind WPF à partir d'un DataSet rempli via une base MySQL
    Bonjour,

    Je me heurte depuis ce matin à un problème de binding en WPF.

    Je m'explique, je récupère du contenu d'une base MySQL à l'aide du driver ODBC que je place ensuite dans un data set :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                   DataSet dataSet = new DataSet();
     
                    using (OdbcConnection con = new OdbcConnection(MyConstring))
                    {
                        OdbcCommand command = new OdbcCommand("SELECT id_produit,nom_produit,description_produit FROM contenu", con);
     
                        OdbcDataAdapter adapater = new OdbcDataAdapter();
     
                        con.Open();
     
                        adapater.SelectCommand = command;
     
                        adapater.Fill(dataSet, "contenu");
                    }
    Ensuite j'aimerai bien binder ce DataSet sur une ListBox que j'ai dans mon XAML, je fais donc un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.myDisplayer.DataContext = dataSet;
    Et ensuite dans mon XAML j'essaye d'accéder aux colones récupérées comme ceci :

    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
    [...] 
               <GridView ScrollViewer.HorizontalScrollBarVisibility="Disabled">
     
                    <GridViewColumn Header="Nom" Width="190" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                   <TextBox VerticalAlignment="Center" Text="{Binding Path=nom_produit}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                        </GridViewColumn>
     
                    <GridViewColumn Header="Image" Width="100" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Image VerticalAlignment="Center" Source="{Binding Path=description_produit}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
     
      [...]

    Le hic c'est que rien n'apparait ! Pourtant mon dataSet est bien rempli, je l'ai vérifié grâce à un DataReader ...

    J'ai eu beau écumer les forums, je n'ai rien trouver pour m'aider ... Alors j'en fait appel à vous

    En vous remerciant par avance pour vos lumières !


    Charles

  2. #2
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Il manque peut-être le nom de la table dans le dataset, pour le chemin du Binding ?
    Essaye sinon de mettre comme DataContext "dataSet.Tables[0]", juste pour voir si ça marche.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut
    Eureka ! Je viens de trouver la solution à mon problème, seulement 5 minutes après avoir posté ! J'en suis désolé et j'espère que ca pourra servir à d'autre.

    C'est donc qu'après avoir défini le DataContext dans le code behind il faut définir l'ItemsSource.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut
    Citation Envoyé par MetalGeek Voir le message
    Il manque peut-être le nom de la table dans le dataset, pour le chemin du Binding ?
    Essaye sinon de mettre comme DataContext "dataSet.Tables[0]", juste pour voir si ça marche.
    En fait en précisant directement la table dans le DataContext (comme on le voit bcp dans les tutos) ca ne fonctionne pas.

    J'ai du le spécifier séparament en rajoutant dans mon xaml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Tables[0]}

    Voilà, voilà, merci pour ta réponse en tout cas !

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

Discussions similaires

  1. Rechercher l'adresse d'une cellule remplie via une combobox
    Par thomanneca dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/02/2014, 19h09
  2. [MySQL] Erreur de lien via une base mysql
    Par berti dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/01/2011, 12h19
  3. Réponses: 4
    Dernier message: 15/01/2008, 16h36
  4. Accéder à une base MySQL 'distante' via Python
    Par tse_tilky_moje_imja dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 24/07/2006, 11h49
  5. se connecter à une base mysql via access
    Par Thom N2h dans le forum Access
    Réponses: 3
    Dernier message: 28/11/2005, 23h54

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