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

Silverlight Discussion :

comment associer des colonnes de type prédéfini d'un dataGrid aux données d'une bdd


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut comment associer des colonnes de type prédéfini d'un dataGrid aux données d'une bdd
    svp

    existe t il un dataBinding, ou autre entre des colonnes prédéfinies du dataGrid (j'utilise celui de telerik) et les colonnes de la table de ma base de données.
    par ce que quand je spécifie la collection de colonnes de mon dataGrid genre un checkBox, une image ... et je le remplis de la base de donnée les colonnes sont dupliquées !!
    je travaille avec des dataClasses type LinQ to sql (.dbml) et le itemSource du dataGrid recoit le résultat d'une requête (dans une opération d'un webservice que j'ai créé) sur cette dataclasse , mais ce que je veux c'est mettre en avance le type de colonne.
    comment pourrais je associer mon grid avec le datacontext de la dataclasse , est ce avec la propriété du binding ?
    est ce ce que je dois faire?
    comment faut il procéder ?

    merci,

    ps: je travaille avec SL4, Visual Studio 2010, et une base de donnée SQLServer 2008.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    J'ai rien compris.

    Tu es sur que tu as mis AutoGenerateColumns à false sur ton RadGridView ?

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut
    navrée!
    ma rédaction reflète ma compréhension qui n'est pas fameuse apparemment.

    quand je met AutoGeneratedColumns à False ,il n'y a rien! les ligne sont vides mais le résultat n'est pas vide le "cout" des ligne est juste (le même nombre de lignes ds ma bdd)

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben tu as dis que tu voulais définir tes propres colonnes sur ton RadGridView ? Tu l'as fait ?

    Il y a qq chose dans ton RadGridView.Columns ?

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut
    oui voilà le xaml : (le même nbr de colonnes que renvoie la requête)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <telerik:RadGridView x:Name="PropositionRadGridView" Grid.ColumnSpan="2" Grid.Column="1" Margin="8" Grid.Row="2" IsReadOnly="False" SelectionMode="Extended" SelectionChanged="PropositionRadGridView_SelectionChanged" AutoGenerateColumns="False">
                            <telerik:RadGridView.Columns >
                                <telerik:GridViewSelectColumn />
                                <telerik:GridViewColumn x:Name="numProposition" Header="N° Proposition"/>
                                <telerik:GridViewColumn x:Name="dateMO" Header="Date mise en oeuvre"/>
                                <telerik:GridViewColumn x:Name="motiv" Header="Motivation"/>
                                <telerik:GridViewColumn x:Name="numFormation" Header="N° Formation"/>
     
                            </telerik:RadGridView.Columns>
                        </telerik:RadGridView>
    le RadGridView (PropositionRadGridView) se charge après cet événement :
    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
     
     
     private void choixComboBox_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
            {
     
                  //if (choixComboBox.SelectedValue.ToString() == "A partir d'une proposition")
              // {
                    ajouterFormationServiceClient cl = new ajouterFormationServiceClient();
                    cl.listerPropositionsCompleted += new EventHandler<listerPropositionsCompletedEventArgs>(cl_listerPropositionsCompleted);
                    cl.listerPropositionsAsync();
     
               //}
     
            }
     
            void cl_listerPropositionsCompleted(object sender, listerPropositionsCompletedEventArgs e)
            {
     
                PropositionRadGridView.ItemsSource = e.Result;
     
            }
    où la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     [OperationContract]
            public List<Proposition> listerPropositions()
            {
                propFormationDataContext d = new propFormationDataContext();
                var p = from propo in d.Propositions select propo;
                return p.ToList();
     
            }
    voilà,

    je sais pas si j'ai le droit de mélanger les sujet mais je profite pour vous poser une autre question : comment récupérer la valeur (en String) que l'utilisateur a choisis dans un comboBox ?

    merci encore,

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben tu as fais des colonnes mais tu les binds pas sur les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <telerik:GridViewColumn ... DataMemberBinding="{Binding Path=LaPropriete}" ... />

  7. #7
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut
    merci
    je vais essayer , et je vous mets au courant.

  8. #8
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut
    c'est que je n'ai pas la propriété DataMemberBinding dans le RadGridViewColumn !! il me manque peut être une référence d'assembly !!
    j'ai lu des choses sur le Data Binding , et vu des examples de code, il y a un Binding au niveau du GridView !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <telerik:RadGridView x:Name="RadGridView1" ItemsSource="{Binding Employees}" RowHeight="50" SelectionMode="Extended" CanUserFreezeColumns="False" AutoGenerateColumns="False">
    mais moi je spécifie le ItemSource à ce niveau :

    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
     
     private void choixComboBox_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
            {
                    ajouterFormationServiceClient cl = new ajouterFormationServiceClient();
                    cl.listerPropositionsCompleted += new EventHandler<listerPropositionsCompletedEventArgs>(cl_listerPropositionsCompleted);
                    cl.listerPropositionsAsync();
     
            }
     
     
     
            void cl_listerPropositionsCompleted(object sender, listerPropositionsCompletedEventArgs e)
            {
     
                PropositionRadGridView.ItemsSource = e.Result;
     
            }
    je sens qu'il me manque des choses!
    c'est peut être au niveau de la propriété DataContext du GridView !!
    je suis perdue!!

  9. #9
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Excuse moi c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <telerik:GridViewDataColumn ... DataMemberBinding="{Binding Path=Firstname"} ...

  10. #10
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Pour ceux qui est du binding, tu bind ton DataGrid sur une collection (via le ItemsSource) et ensuite pour chaque ligne il faut dire quoi afficher, donc tu créé des colonnes (Name, Firstname par exemple) et tu dis que pour chaque ligne tu veux afficher les propriétés correspondantes, donc tu vas mettre 2 GridViewDataColumn dans ton GridView l'une bindé sur la propriété Name de ta classe Employee et l'autre sur la propriété Firstname.

  11. #11
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Par défaut
    merci encore , ça marche.
    mais il a fallut que je mette le nom de la propriété comme celui défini comme suit :
    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
     
    [DataContract]
            public class propositions
            {
                [DataMember]
                public int numProposition;
                 [DataMember]
                public String motivation;
                 [DataMember]
                public int numFormation;
                 [DataMember]
                public DateTime dateMiseEnOeuvre;
                 [DataMember]
                public DateTime dateProposition;
            }
    parce que je n'est pas sélectionné toutes les colonnes de la ma table :

    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
     
    [OperationContract]
            public List<propositions> listerPropositions()
            {
                propFormationDataContext d = new propFormationDataContext();
                var p = from propo in d.Propositions
                        select new propositions
                        {
                            numProposition = propo.numProposition,
                            dateProposition= Convert.ToDateTime(propo.dateProposition),
                            motivation = propo.motif,
                            numFormation = Convert.ToInt16(propo.refFormmation),
                            dateMiseEnOeuvre= Convert.ToDateTime( propo.dateMiseEnOeuvre),
                        };
     
                return p.ToList();
     
            }
    Merci,

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/04/2007, 12h19
  2. Réponses: 5
    Dernier message: 24/05/2006, 22h18
  3. Comment definir des colonnes...
    Par sbeu dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/10/2005, 07h27
  4. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 11h21

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