Bonjour à tous,
Je suis entrain de développer une appli de gestion de magasin.
J'ai plusieurs table ( produit,commande,ligne de commande, client, fournisseur ...)
Pour chaque table j'ai créer une fonction lister, avec comme paramètre l'id de la table.
J'ai un DataGridView dans mon From qui liste les info de chaque commandes.
Dans cette liste je souhaite affiché des info de la table commande, ligne de commande, produit et client.
J'ai donc utiliser une imbrication de foreach pour ajouter a ma DataTable les différentes information.
Ensuite ce DataTable est ajouter a la propriété DataSource du DataGridView.
Mais plus je regarde ce bout de code, plus je me dit que cette méthode est très sale.
Une imbrication de forEach doit consommé une grande quantité de ressources. ( pour l'instant je m'en rend pas compte vue que mes tables contienne quelque lignes )
J'ai penser a créer une fonction spéciale qui listerai avec comme paramètre une requête.
Cette requête serai bourré de jointure et niveau performance je sais pas sa pourrai être mieux.
Donc je me tourne vers vous pour avoir votre avis d'expert et connaître les bonne pratique a adopté dans cette situation.
Voici le code :
Merci a vous pour vos remarque et critique
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 private void Commande_Load(object sender, EventArgs e) { DataTable CommandeTb = new DataTable(); CommandeTb.Columns.Add("idcom"); CommandeTb.Columns.Add("idclient"); CommandeTb.Columns.Add("datecom"); CommandeTb.Columns.Add("etat"); CommandeTb.Columns.Add("nom"); CommandeTb.Columns.Add("idprod"); CommandeTb.Columns.Add("quantite"); CommandeTb.Columns.Add("nomProduit"); CommandeTb.Columns.Add("description"); foreach (TraiteurLibrairie.Commande DataCommande in Gestion.ListerCommande(0)) { foreach (Client DataClient in Gestion.ListerClient(DataCommande.idclient)) { foreach (Ligne DataLigne in Gestion.ListerLigne(DataCommande.idcom)) { foreach (Produit DataProduit in Gestion.ListerProduit(DataLigne.idprod)) { CommandeTb.Rows.Add(DataCommande.idcom, DataCommande.idclient, DataCommande.datecom,DataCommande.etat, DataClient.nom, DataLigne.idprod, DataLigne.quantite, DataProduit.nom, DataProduit.description); } } } } this.dataGridViewCommande.DataSource = CommandeTb; this.dataGridViewCommande.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; this.toolStripStatusLabel1.Text = "Gestion des commandes"; }
Partager