Tri colonnes DataGridView avec DataSource [Résolu]

cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 28 juin 2015 à 12:06 - Dernière réponse : Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 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 

5 réponses

Répondre au sujet
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - Modifié par Whismeril le 28/06/2015 à 17:20
0
Utile
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 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 28 juin 2015 à 19:10
0
Utile
1
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 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 28 juin 2015 à 21:10
Bonne soirée à toi
Commenter la réponse de cs_JMO
cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - Modifié par cs_JMO le 28/06/2015 à 22:18
0
Utile
1
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 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 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.