cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
Modifié par Whismeril le 24/07/2015 à 07:45
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024
-
24 juil. 2015 à 12:57
Bonsoir le Forum,
Suite à export d'un fichier xml, je dispose d'une List(Of) me permettant d'alimenter un DataGridView.
MyJobs = (From k In MyList, a In k.Applications, j In a.Jobs
Select j.AffecteParent(a, k)).OrderBy(Function(j) j.EnvironnementApplicationJob).ToList()
' Chargement DataGridView
Me.DataGridView1.DataSource = MyJobs
Le load du DataGridView, environ 1200 lignes et 35 colonnes, prend 3-4".
Sur le formulaire, le load d'une vingtaine de Combobox prenait 4-5".
' Chargement ComboBoxENV
Dim MyENV = From a In MyJobs
Order By a.Environnement Ascending
Select a.Environnement
Me.ComboBoxEnv.DataSource = MyENV.Distinct.ToList
' Chargement ComboBoxApp
Dim MyAPP = From a In MyJobs
Order By a.Application Ascending
Select a.Application
Me.ComboBoxApp.DataSource = MyAPP.Distinct.ToList
J'ai supprimé toutes les comboboxes et créé un MenuStrip et plusieurs ToolStripMenuItems.
Pour le load
' Load ToolStripMenuEnv
Dim MyENV = (From a In MyJobs
Order By a.Environnement Ascending
Select a.Environnement).Distinct()
For Each item As String In MyENV
Me.ToolStripMenuEnv.DropDownItems.Add(item)
Next
' Load ToolStripMenuApp
Dim MyAPP = (From a In MyJobs
Order By a.Application Ascending
Select a.Application).Distinct()
For Each item As String In MyAPP
Me.ToolStripMenuApp.DropDownItems.Add(item)
Next
Mon problème, le load des ToolStrips, via For each ... Next s'effectue en 1'10".
Y aurait-il pas une autre méthode pour le load des ToolStrips ???
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656 24 juil. 2015 à 07:47
Bonjour,
il faudrait que tu fasses des piquages de temps entre chaque groupe d'instructions pour voir qui est long.
Ensuite peut-être faire un distinct avant le order by pourrait réduire le temps (mais à vérifier avec les piquages)
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656 24 juil. 2015 à 08:11
un truc comme ça
Dim MyENV = (From a In MyJobs.Select(Function(j) j.Environnement).Distinct()
Order By a Ascending
Select a)
For Each item As String In MyENV
mnuMenu.Items.Add(item)
Next
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656
>
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024 24 juil. 2015 à 08:20
ou ça
Dim MyENV = (From a In MyJobs.Select(Function(j) j.Environnement).Distinct()
Order By a Ascending
Select New ToolStripMenuItem(a)).ToArray()
mnuMenu.Items.AddRange(MyENV)
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827
>
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024 24 juil. 2015 à 10:14
Bonjour Whismeril,
J'ai testé tes propositions et la bonne est
Dim MyJOB = (From a In MyJobs.Select(Function(j) j.Job).Distinct() Order By a Ascending Select New ToolStripMenuItem(a)).ToArray()
ToolStripMenuJob.DropDown.Items.AddRange(MyJOB)
Testé sur l'ensemble des ToolStrips, le chargement de celles-ci met 1".
Merci et bonne journée,
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656
>
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018 24 juil. 2015 à 12:18
Ça me parait logique, un order by c'est long, je ne sais pas comment il est codé, mais il faut que pour chaque item, évaluer ou le placer dans la collection de sortie.
Le fait de faire le distinct d'abord, réduit cette collection et donc le temps d'exécution.
Après sortir un tableau de toolstripmenuitem et l'ajouter avec AddRange, je ne savais pas si ça amènerait un gain de temps
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827
>
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024 24 juil. 2015 à 12:25
Ta première proposition
Dim MyENV = (From a In MyJobs.Select(Function(j) j.Environnement).Distinct() Order By a Ascending Select a)
For Each item As String In MyENV
mettait exactement le même temps que mon exemple initial (40" pour 1230 lignes)
24 juil. 2015 à 08:11
24 juil. 2015 à 08:20
24 juil. 2015 à 10:14
J'ai testé tes propositions et la bonne est
Testé sur l'ensemble des ToolStrips, le chargement de celles-ci met 1".
Merci et bonne journée,
24 juil. 2015 à 12:18
Le fait de faire le distinct d'abord, réduit cette collection et donc le temps d'exécution.
Après sortir un tableau de toolstripmenuitem et l'ajouter avec AddRange, je ne savais pas si ça amènerait un gain de temps
24 juil. 2015 à 12:25