Partage
  • Partager sur Facebook
  • Partager sur Twitter

[WPF]Afficher une collection dans un Datagrid

    8 août 2019 à 22:58:45

    Bonjour a tous,

    je suis entrain d'essayer de developper un soft pour gerer un pointage de personnel.

    J'ai créer une classe Employés, une classe Releve, et une classe Jour.

    Employé utilise Releve qui utilise Jour.

    Donc j'ai une collection d'Employés qui a chaque fois a une releve qui comporte une liste de jour.

    Déjà jusque la est ce que ça peut allez?

    Je cherche ensuite a afficher cette collection dans un DataGrid qui pour un Employe choisi, m'afficherai la Releve qui me donne une ligne par jour. Mais je ne vois pas vraiment comment m'y prendre côté WPF. J'ai créer mon DataGrid avec mes colonnes.

    Auriez vous une explication ou même un liens vers lequel je peux m'appuyer pour comprendre pourquoi je bloque?

    Merci d'avance.

    XAML:

    <Window x:Class="Pointage.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:Pointage"
            xmlns:Donnee="clr-namespace:Pointage.ViewModel"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Window.Resources>
            <ResourceDictionary>
                <Donnee:PointageViewModel x:Key="Donnee"/>
                <Color x:Key="backgroundColor">#33302E</Color>
            </ResourceDictionary>
        </Window.Resources>
    
    
        <Grid>
            <DatePicker HorizontalAlignment="Left" Margin="77,53,0,0" VerticalAlignment="Top" Name="dtDebut"/>
            <Button Content="Button" HorizontalAlignment="Left" Margin="570,57,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
            <DatePicker HorizontalAlignment="Left" Margin="288,53,0,0" VerticalAlignment="Top" x:Name="dtFin"/>
            <DataGrid ItemsSource="{Binding Donnee}" HorizontalAlignment="Left" Height="272" Margin="77,112,0,0" VerticalAlignment="Top" Width="627">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Jour" Width="50"/>
                    <DataGridTextColumn Header="Date" Width="80"/>
                    <DataGridTextColumn Header="Matin" Width="80"/>
                    <DataGridTextColumn Header="Midi" Width="80"/>
                    <DataGridTextColumn Header="Apres-Midi" Width="80"/>
                    <DataGridTextColumn Header="Soir" Width="80"/>
                    <DataGridTextColumn Header="Total" Width="80"/>
                </DataGrid.Columns>
                
            </DataGrid>
        </Grid>
    </Window>
    

    Employe:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Pointage.Model
    {
        public class Employes
        {
            private string _nom;
            private string _prenom;
            private string _adresse;
            private string _entreprise;
            private string _emploi;
            private string _qualification;
            private string _niveau;
            private int _echelon;
            private int _coefficient;
            private int _matricule;
            private DateTime _anciennete;
            private double _baseHoraire;
            private Releve _releve;
    
            public string Nom { get => _nom; set => _nom = value; }
            public string Prenom { get => _prenom; set => _prenom = value; }
            public string Adresse { get => _adresse; set => _adresse = value; }
            public string Entreprise { get => _entreprise; set => _entreprise = value; }
            public string Emploi { get => _emploi; set => _emploi = value; }
            public string Qualification { get => _qualification; set => _qualification = value; }
            public string Niveau { get => _niveau; set => _niveau = value; }
            public int Echelon { get => _echelon; set => _echelon = value; }
            public int Coefficient { get => _coefficient; set => _coefficient = value; }
            public int Matricule { get => _matricule; set => _matricule = value; }
            public DateTime Anciennete { get => _anciennete; set => _anciennete = value; }
            public double BaseHoraire { get => _baseHoraire; set => _baseHoraire = value; }
            public Releve Releve { get => _releve; set => _releve = value; }
    
            public Employes()
            {
                Releve = new Releve();
            }
        }
    }
    

    Releve

    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Pointage.Model
    {
        public class Releve
        {
    
            public int NombreJours { get; set; }
            public DateTime Debut { get; set; }
            public DateTime Fin { get; set; }
            public ObservableCollection<Jours> Jours { get; set; }
    
            public Releve()
            {
                Jours = new ObservableCollection<Jours>();
            }
        }
    }
    

    Jours

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Pointage.Model
    {
        public class Jours
        {
            public enum Jour { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche};
            
            public string Matin { get; set; }
            public string Midi { get; set; }
            public string AMidi { get; set; }
            public string Soir { get; set; }
            public Jours()
            {
                Matin = "";
                Midi = "";
                AMidi = "";
                Soir = "";
            }
    
        }
    }
    






    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2019 à 10:44:35

      Un exemple de DataBinding dans une Datagrid WPF, trouvé en 2 - 2 via Google :

      https://www.c-sharpcorner.com/UploadFile/mahesh/datagrid-in-wpf/

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        2 novembre 2019 à 13:13:31

        Merci Bacelar, j'ai avancé à ce sujet.
        Aujourd'hui je suis sur une nouvelle contrainte. 
        J'ai 3 tables dans ma bases :

        Donc comme on peut le voir, je recupere le client pour chaque jour, et chaque jour est attitré a un employé.
        Ce que je souhaite faire, c'est afficher dans ma datagrid :
        -Date
        -Matin
        -Midi
        -Apres Midi
        -Soir
        -Nom du client
        J'arrive a tout afficher sauf le nom du client. Comment puis je m'y prendre?
        Je cherche en meme temps que je poste ce message :/

        -
        Edité par steph02590 2 novembre 2019 à 13:17:30

        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2019 à 9:23:08

          Une DataView dans un DataSet que tu "Databind".
          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

          [WPF]Afficher une collection dans un Datagrid

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown