locked
Ajout de ligne a un datagrid RRS feed

  • Question

  • Bonjour

    J'ai une observable Collection que je souhaiterai définir en tant qu'ItemsSource d'un datagrid mais des le démarrage de l'application j'ai une erreur : 

    j'ai une class Mod qui me sert a remplir ma collection :

        public class Mod
        {
            public int ID { get; set; }
            public string Designation { get; set; }
            public int Longueur { get; set; }
            public int Hauteur { get; set; }
            public int Quantite { get; set; }
        }
    

      je déclare ma collection :
      public ObservableCollection<Mod> CompositionSaisie = new ObservableCollection<Mod>();

     enfin après avoir récupérer l'objet Mod via un service WCF je l'ajoute a la liste. Sa je l'ai contrôler mon objet est bien defini et les valeur sont présente. C'est des que je tente de mettre ma liste en tant qu'ItemsSource que j'ai l'erreur.

            void proxy_CaracteristiqueOuvCompleted(object sender, CaracteristiqueOuvCompletedEventArgs e)
            {
                Mod ld = new Mod {ID = e.Result.ID, Designation = e.Result.Designation, Hauteur = 2500, Longueur = 0, Quantite = 1};
    
                CompositionSaisie.Add(ld);
    
                dgSaisie.ItemsSource = CompositionSaisie;  
            }
    


    J'ai défini moi même les colonnes du datagrid ainsi :

    <sdk:DataGrid AutoGenerateColumns="False" Height="427" HorizontalAlignment="Left" Margin="281,97,0,0" Name="dgSaisie" VerticalAlignment="Top" Width="537">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="ID Module" IsReadOnly="True" Width="Auto" />
                    <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Désignation du module" IsReadOnly="True" Width="Auto" />
                    <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Longueur" Width="Auto" />
                    <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Hauteur" Width="Auto" />
                    <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Quantite" Width="Auto" />
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
    

    Voila pour moi sa devrais fonctionner, pouvez vous m'expliquer d’où peut venir cette erreur et comment y remédier.

    Merci d'avance pour votre aide.

     

    mardi 13 septembre 2011 12:45

Réponses

  • Bonsoir,

    Vous avez défini vous même les colonnes du datagrid mais vous n'avez pas précisé à quelle propriété de votre objet Mod vous souhaitez binder chacune des colonnes.

    Si pour tester vous supprimez vos colonnes manuelles et autorisez la génération automatique des colonnes vous ne devriez plus avoir d'erreur :

    <sdk:DataGrid AutoGenerateColumns="True"  HorizontalAlignment="Left" Name="dgSaisie" VerticalAlignment="Top" Width="537" /> 
    

    Pour définir vos colonnes ajouter sur chacune telle la propriété binding. Par exemple pour la propriété ID

    <sdk:DataGridTextColumn Binding="{Binding ID}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="ID Module" IsReadOnly="True" Width="Auto" />
    
    Cordialement

     



    • Modifié nikho mardi 13 septembre 2011 16:29
    • Proposé comme réponse Ciprian Duduiala mercredi 14 septembre 2011 06:20
    • Marqué comme réponse Liqiao mercredi 14 septembre 2011 06:30
    mardi 13 septembre 2011 16:28

Toutes les réponses

  • Bonsoir,

    Vous avez défini vous même les colonnes du datagrid mais vous n'avez pas précisé à quelle propriété de votre objet Mod vous souhaitez binder chacune des colonnes.

    Si pour tester vous supprimez vos colonnes manuelles et autorisez la génération automatique des colonnes vous ne devriez plus avoir d'erreur :

    <sdk:DataGrid AutoGenerateColumns="True"  HorizontalAlignment="Left" Name="dgSaisie" VerticalAlignment="Top" Width="537" /> 
    

    Pour définir vos colonnes ajouter sur chacune telle la propriété binding. Par exemple pour la propriété ID

    <sdk:DataGridTextColumn Binding="{Binding ID}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="ID Module" IsReadOnly="True" Width="Auto" />
    
    Cordialement

     



    • Modifié nikho mardi 13 septembre 2011 16:29
    • Proposé comme réponse Ciprian Duduiala mercredi 14 septembre 2011 06:20
    • Marqué comme réponse Liqiao mercredi 14 septembre 2011 06:30
    mardi 13 septembre 2011 16:28
  • Bonjour,

    Est-ce que vous avez testé la solution proposée ? Merci de partager avec nous les résultats,afin que d'autres personnes avec le même problème puissent profiter de cette solution.


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    mardi 13 septembre 2011 18:01
    Modérateur
  • Bonjour

    Merci pour cette réponse, en effet cela fonctionne. 

    mercredi 14 septembre 2011 06:31