Trier un datagridview sur plusieurs colonnes

Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
- - Dernière réponse : Whismeril
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
- 28 févr. 2019 à 12:08
Bonjour tout le monde,
J'essaye de trier un datagridview sur 2 colonnes mais j'ai beau chercher sur google, rien trouvé.
Mon datagrid n'est pas connecté à un datasource, juste un fichier texte que je charge.
Si quelqu'un trouve, super cool.
Jean
Afficher la suite 

20/31 réponses

Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
Bonjour

Mon datagrid n'est pas connecté à un datasource,
c'est bien dommage ce serait nettement plus simple.

Il est de quel format ton fichier texte?
Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
1ere ligne texte = 1 cellule
2eme ligne text = 1 cellule
jusqu'à 5 lignes = 5 cellule...
Puis sépateur dans le fichier et je recommence.
Il est vrai qu'ensuite, je verrais pour une base de données, mais pour l'instant, pas mal de boulot dans le reste du pgm
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
Tu peux poster un exemple avec des données représentatives et non confidentielles?
Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
{Objets Cachés}
25/02/2019
https://www.zonenet.ca/index.php?%2Fforums%2Ftopic%2F130693-mystery-trackers-raincliff-ec-2011objets-cach%C3%A9s%2F=
Mystery Trackers - Raincliff Edition Collector
Mystery Trackers - Raincliff Edition Collector (Objets cachés)
charly2011
-------------------------------------------------------------------------
{Objets Cachés}
25/02/2019
https://www.zonenet.ca/index.php?%2Fforums%2Ftopic%2F130691-mystery-trackers-les-quatre-as-ec-2013-objets-cach%C3%A9s%2F=
Mystery Trackers - Les Quatre As Edition Collector
Mystery Trackers - Les Quatre As Edition Collector (Objets cachés)
charly2011
-------------------------------------------------------------------------
{Gestion du temps}
17/01/2019
https://www.zonenet.ca/index.php?%2Fforums%2Ftopic%2F128317-heroes-of-hellas-4-birth-of-legend-deluxe-razz1303%2F=
Heroes of Hellas 4 - Birth of Legend Deluxe
Heroes of Hellas 4 - Birth of Legend Deluxe
eifeljane
-------------------------------------------------------------------------
{Objets cachés}
07/09/2018
https://www.zonenet.ca/index.php?%2Fforums%2Ftopic%2F120912-ghost-files-the-face-of-guilt-collectors-edition2018fr-freedom%2F=
Ghost Files - The Face of Guilt Edition Collector
Ghost Files - The Face of Guilt Edition Collector
monarch02
------------------------------------------------------------------------- ..................
La ligne de l'adresse internet tient sur une ligne normalement bien sur.
Dans ma grille, je veut trier sur le genre de jeux (ligne 1 qui est la colonne 3 dans la grille) et ensuite sur le nom du jeu (ligne 4 qui est la colonne 2 dans la grille)
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
Ok, avec l’exemple je comprends.
Et bien tu peux écrire une classe qui a 5 propriétés.
Tu charges chaque jeux dans une List(of) que tu tries avec les méthodes OrderBy et ThenBy et ensuite tu bindes la liste triée au datagridview.
Je ne peux pas te montrer de code ce matin, je t’en posterai un dans l’après-midi ou la soirée.
Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Merci chef, suis super content
Commenter la réponse de jean67190
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
il est vrai que avec une db, et sql, c'est plus simple, mais pas encore fait
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
Y’a ni db ni sql, que du .Net.
https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
Les exemples sont en C#, mais il y a de nombreux traducteurs en ligne.
Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
je vais regarder.
Commenter la réponse de jean67190
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Ou la la, j'ai pas tout compris leur exemples
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
Je te poste un exemple ce soir

Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Merci chef
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
D'abord la classe Jeu
Imports System
Imports System.Collections.Generic

	Public Class Jeu
		Public Sub New(ByVal Lignes As List(Of String))
			Genre = Lignes(0).Replace("{", "").Replace("}", "")
			[Date] = Convert.ToDateTime(Lignes(1))
			Adresse = Lignes(2)
			Titre = Lignes(3)
			Titre2 = Lignes(4)
			Pseudo = Lignes(5)
		End Sub

		Public Property Genre() As String

		Public Property [Date]() As Date

		Public Property Adresse() As String

		Public Property Titre() As String

		Public Property Titre2() As String

		Public Property Pseudo() As String


	End Class


ensuite le chargement du fichier
			Dim fichier() As String = File.ReadAllLines("jeux.txt")'on charge toutes les lignes dans un tableau de string
			Dim lesJeux As New List(Of Jeu)()'initialisation de la liste

			For i As Integer = 0 To fichier.Length - 1 Step 7
				lesJeux.Add(New Jeu(fichier.Skip(i).Take(6).ToList()))
			Next i


Le tri avec une requête Linq
Dim jeuxTries As List(Of Jeu) = lesJeux.OrderBy(Function(j) j.Genre).ThenBy(Function(j) j.Titre).ToList()


Et le binding sur le datagridview
dataGridView1.DataSource = jeuxTries


En l'état les colonnes sont dans l'ordre d'écriture des propriétés dans la classe.
Pour changer l'ordre il suffit donc d'intervertir les déclarations dans la classe.
Pour personnaliser plus le binding, tu peux passer via un bindingSource, voir https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Ouah, t'as du de casser la tête, super, je vais tester. Pour l'instant, je met à jour visual studio 2017 pro, j'ai créé un db access, mais un pb ole.

Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas inscrit sur l'ordinateur local

Bon en attendant, je vais faire ce que tu m'a donné, je vais pas faire une db pour un si petit fichier.
Je te tient au courant, grand merci
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
Ouah, t'as du de casser la tête
en fait non, je l'ai écrit en C# (que je connais mieux), et l'ai passé au traducteur d'ou le [Date], j'avais pas fait attention.
J'y ai passé 15-20 minutes.
Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Ben la, suis toujours dans la maj de visual studio. Je verrais demain et te dit.
Il faut que j'apprenne le C#.
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
En fait VB.Net, est un faux ami de VBA ou VB6.
Il s'agit de C# déguisé en VB et avec quelques tolérances.

Voir ici
https://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net
Commenter la réponse de Whismeril
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Je vais lire ça, intéressant. Mais pas cette nuit. Fatigué. A demain, bonne nuit
Commenter la réponse de jean67190
Messages postés
25
Date d'inscription
lundi 25 février 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Salut,
Je commence seulement. Bon j'ai petit pb, ça me créé des nouvelles colonnes dans ma grille à la suite de celles existante.
Je cherche, sinon ça marche à part mon pb de colonnes
Commenter la réponse de jean67190
Messages postés
13824
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
0
Merci
Ha oui, pour le binding, il faut un contrôle vierge.
Commenter la réponse de Whismeril