Tri colonnes DataGridView avec DataSource [Résolu]

cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 28 juin 2015 à 12:06 - Dernière réponse : Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention
- 28 juin 2015 à 22:08
Bonjour le Forum,

Ceci est très certainement une question récurrente.

Pour charger un DataGridView
        Dim mesJobs As List(Of JOB) = (
From k In maListe, a In k.Applications, j In a.Jobs
Select j.AffecteParent(a, k)).ToList()

Me.DataGridView1.DataSource = mesJobs
Mes recherches sur MSDN n'aboutissent pas.

Pêle-mêle mes essais :
        'DataGridView1.Sort(New RowComparer(SortOrder.Ascending))

'Me.DataGridView1.DataSource.Sort = "Environnement ASC, Application ASC, Job ASC"

'Dim source1 As New BindingSource()
'source1.DataSource = mesJobs
'Me.DataGridView1.DataSource = source1 'mesJobs
'Me.DataGridView1.Columns("Job").SortMode = DataGridViewColumnSortMode.Programmatic
'DataGridView1.Sort(DataGridView1.Columns("Job"), System.ComponentModel.ListSortDirection.Ascending)
'DataGridView1.Columns(0).SortMode = DataGridViewColumnSortMode.Programmatic

'DataGridView1.Sort(DataGridView1.Columns(1), ListSortDirection.Ascending)


Je souhaiterai faire un tri sur mes 3 premières colonnes.
Si impossible, je peux créer une colonne en première position qui sera la contaténation de mes 3 colonnes.
En relisant mes précédents posts concernant l'extraction de données à partir d'un fichier xml (http://codes-sources.commentcamarche.net/forum/affich-10051169-linq-extraction-fichier-xml), il apparait que je dois d'abord trier mes données avant de les afficher dans le DataGridView.
De même, je pensais qu'un tri par l'utilisateur était possible.
Dans mon cas actuel, le tri de colonne est inactif malgré le AllowUserToOrderColumns à True.

Merci de suggestions,
jean-marc
Afficher la suite 

Votre réponse

5 réponses

Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - Modifié par Whismeril le 28/06/2015 à 17:20
0
Merci
Bonjour le fait de binder une source de données à un contrôle, entraine que ce contrôle devient l'image de cette source donc:
  • 1 effectivement le plus simple est de trier la source

        'liste de Jobs, avec les parents affectés
        Dim mesJobs As List(Of Job) = (
            From e In maListe, a In e.Applications, j In a.Jobs
            Select j.AffecteParent(a, e)).OrderBy(Function(j) j.Name).ThenBy(Function(j) j.ParamAffiches).ToList()'champs de tri pris au hasard pour l'exemple

  • 2 si tu veux afficher une concaténation de colonnes, il faut créer une propriété dans ton job qui le fait, mais tu vas me dire que tu vas avoir tes données en double, à cela je te réponds par ce lien (que je t'ai déjà donné, mais vu le flot d'infos que tu as eu ces derniers jours, je ne sui pas surpris que tu en aies raté un peu)


Modérer m'amène à intervenir dans de nombreux posts, mais les seuls langages que je connaisses sont le C# et un peu de VB. Pour vos codes pensez à la coloration.
Réponse trouvée ->Question Résolue
Commenter la réponse de Whismeril
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 28 juin 2015 à 19:10
0
Merci
Bonjour Whismeril,

J'ai donc suivi tes conseils :
- ajout du champ EnvAppJob;
- modification de la requête;
Dim mesJobs As List(Of JOB) = (
From k In maListe, a In k.Applications, j In a.Jobs
Select j.AffecteParent(a, k)).OrderBy(Function(j) j.EnvAppJob).ToList()

Me.DataGridView1.DataSource = mesJobs
- Modification du DataGridView, ajout JOBBindingSource et suppression de la colonne EnvAppJob.

Le DataGridView est correctement trié (+ gain de temps pour le load).

Merci et bonne soirée,

Prochaine étape : chargement de ComboBoxes à partir du Binding.

jean-marc
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 28 juin 2015 à 21:10
Bonne soirée à toi
Commenter la réponse de cs_JMO
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - Modifié par cs_JMO le 28/06/2015 à 22:18
0
Merci
Whismeril, cool Linq et ton binding !!!

Dim MyDDO = From a In mesJobs
Select a.DDO
Me.ComboBox1.DataSource = MyDDO.Distinct.ToList
pour charger le champ DDO de List(Of T) dans un combo.
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 28 juin 2015 à 22:08
Doucement. Ça n'est pas mon binding, juste un moyen bien pratique développé par d'autres ;-)
Commenter la réponse de cs_JMO

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.