Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 01:41

    wpfbind2-copie-1.png

  1. Créer un nouveau projet
  2. Ajouter un nouvel élémentADO.NET Entity Data Model (*.edmx)
  3. Sélectionner la base de données SQL Server (ou Modèle vide)
  4. Puis les tables et important les procédures stockées .C’est grâce à elles que les objets vont être créés dans le projet pour accéder à la base .

Des classes avec properties sont générées pour :

  • Chaque table
  • Chaque procédure stockée « Select »

 

Les méthodes se trouvent dans la classe « Entities » (définie après la sélection de la base de données) (fichier *.Context .cs)

Après c’est tout simple il suffit d’instancier un objet de la classe « Entities » pour utiliser les méthodes  

wpfbind3.png  

Exemple 2 WPF Forms /une form liste des clients /une form détail pour l’ajout et modification de clients  

MainWindow /Liste

  • SI l’ItemTemplate de la listBox n’est pas défini , la méthode ToString() est appelée pour afficher les objets
  • Je passe l’objet(un « client » ici) à modifier .

public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

 

            dbDemoEntities dbDemo = new dbDemoEntities();

            // GetAll / liste       

            ObjectResult<GetAllFromClient_Result> clients = dbDemo.GetAllFromClient();

            lstClients.ItemsSource = clients;

 

 

        }

 

        private dbDemoEntities dbDemo;

 

        private void lstClients_MouseDoubleClick(object sender, MouseButtonEventArgs e)

        {

            // on récupère le "client" sélectionné dans la listBox avec (GetAllFromClient_Result)lstClients.SelectedItem

            ClientDetailWindow clientDetailWindow = new ClientDetailWindow((GetAllFromClient_Result)lstClients.SelectedItem);

            clientDetailWindow.ShowDialog();

 

            GetClients();

        }

        private void GetClients()

        {

            ObjectResult<GetAllFromClient_Result> clients = dbDemo.GetAllFromClient();

            lstClients.ItemsSource = clients;

        }

 

        private void btnGetClient_Click(object sender, RoutedEventArgs e)

        {

            ClientDetailWindow clientDetailWindow = new ClientDetailWindow();

            clientDetailWindow.ShowDialog(); 

            GetClients();         

        }

 

        private void btnDeleteClient_Click(object sender, RoutedEventArgs e)

        {

            if (MessageBox.Show(string.Format("Voulez-vous supprimer ce client : {0} ? ", ((GetAllFromClient_Result)lstClients.SelectedItem).Name), "Supprimer un client", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation) == MessageBoxResult.OK)

            {

                dbDemo.DeleteClient(((GetAllFromClient_Result)lstClients.SelectedItem).Id);

                GetClients();

            }

        }

     

    }

}

 

<Grid >

        <ListBox Name="lstClients" HorizontalAlignment="Left" Height="201" Margin="10,10,0,0" VerticalAlignment="Top" Width="482" MouseDoubleClick="lstClients_MouseDoubleClick" />

        <Button Name="btnGetClient" Content="Ajouter un client" HorizontalAlignment="Left" Margin="10,216,0,0" VerticalAlignment="Top" Width="128" Click="btnGetClient_Click"/>

        <Button x:Name="btnDeleteClient" Content="Supprimer le client" HorizontalAlignment="Left" Margin="143,216,0,0" VerticalAlignment="Top" Width="117" Click="btnDeleteClient_Click"/>

</Grid>

 

ClientDetailWindow/Détail

public partial class ClientDetailWindow : Window

    {

        public ClientDetailWindow()

        {

            InitializeComponent();

 

            this.Client = new GetAllFromClient_Result();

            Status = StatusQuery.Add;

 

            DataContext = Client;

            LoadCategories();

        }

 

        public ClientDetailWindow(GetAllFromClient_Result client)

        {

            InitializeComponent();

 

            this.Client = client;

            Status = StatusQuery.Update;

 

            DataContext = Client;

            LoadCategories();

        }

 

        public void LoadCategories()

        {

            ObjectResult<GetAllFromCategory_Result> AllCategories = AllCategories = dbDemo.GetAllFromCategory();

            cboCategoryClient.ItemsSource = AllCategories;

        }

 

        public GetAllFromClient_Result Client { get; set; }

        public StatusQuery Status { get; set; }

        private dbDemoEntities dbDemo = new dbDemoEntities();

 

        private void btnOk_Click(object sender, RoutedEventArgs e)

        {

 

            if (Status == StatusQuery.Add)

                // Insert

                dbDemo.InsertClient(Client.Name, Client.Email, Client.CategoryId);

            else

                // Update

                dbDemo.UpdateClient(Client.Id, Client.Name, Client.Email, Client.CategoryId);

 

            this.DialogResult = true;

        }

 

        private void btnCancel_Click(object sender, RoutedEventArgs e)

        {

           

        }

    }

 

    public enum StatusQuery

    {

        Add,

        Update

    }

 

<StackPanel>

        <Label Name="lblId" Height="23" Content="{Binding Id}"/>

        <TextBox Name="txtName" Height="23" TextWrapping="Wrap" Text="{Binding Name}"/>

        <TextBox Name="txtEmail" Height="23" TextWrapping="Wrap"  Text="{Binding Email}"/>

        <ComboBox Height="20" Name="cboCategoryClient"

                      ItemsSource="{Binding}"

                      DisplayMemberPath="Name"

                      SelectedValuePath="Id"

                      SelectedValue="{Binding CategoryId}"

                      />

 

        <StackPanel Orientation="Horizontal">

            <Button Name="btnOk" Content="Valider" Click="btnOk_Click"/>

            <Button Name="btnCancel" Content="Annuler" Click="btnCancel_Click"/>

        </StackPanel>

 

    </StackPanel>

 

Autre possibilité : utiliser LINQ

Exemple pour filtrer ou trier.

lstClients.ItemsSource = (from c in dbDemo.Client where c.CategoryId == 1 select c.Name).ToList();

Attention aux conversions (toujours très utile la méthode GetType()  pour savoir ce que l’on récupère)

 

Partager cet article

Repost 0
Published by Romagny13 - dans Entity Framework
commenter cet article

commentaires