Recherche par date sur un datagridview

Fermé
legr90 - 29 juil. 2016 à 14:00
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 - 4 août 2016 à 13:36
Bonjour,
Au secours...En fait,je voudrais effectuer une recherche par date sur mon datagridview en vb.NET 10 mais je ne sais pas comment m'y prendre???Merci d'avance


1 réponse

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 929
29 juil. 2016 à 18:37
Bonjour

en .Net les contrôles (DataGridView inclus) n'ont pas vocation à être des conteneurs de données, même si la possibilité (historique) est restée présente.

Le principe est d'utiliser des collections de classes judicieusement écrites.
Pour tout traitement sur les données (y compris les recherches) => travail avec les collections.
Pour afficher les données, utiliser le binding, voir un tuto ici.

Voici un exemple de recherche de personnes nées dans une période choisie.
Un exemple de classe, (y'en a plus que nécessaire pour l'exemple, mais je l'avais sous la main)
Public Class Personne
    Public Sub New() 'Constructeur vide, nécessaire si on veut initiliaser avec "les accolades"
    End Sub

    Public Sub New(ByVal Nom As String, ByVal Prenom As String, ByVal Naissance As String) 'Constructeur avec paramètres
        Me.Nom = Nom
        Me.Prenom = Prenom
        Me.Naissance = DateTime.Parse(Naissance) 'j'affecte la propriété comme ça l'age sera calculé
    End Sub

    Private privateNaissance As Date
    Public Property Naissance() As Date 'propriété avec calcul sur la variable interne
        Get
            Return privateNaissance
        End Get
        Set(ByVal value As Date)
            privateNaissance = value
            Age = Date.Now.Year - privateNaissance.Year
        End Set
    End Property

    Public Property Nom() As String

    Public Property Prenom() As String

    Public ReadOnly Property NomComplet() As String 'Propriété en lecture seule qui retourne le nom complet au format Prénom NOM
        Get
            Return String.Format("{0} {1}", Prenom, Nom.ToUpper())
        End Get
    End Property

    Private privateAge As Integer
    Public Property Age() As Integer 'Propriété en écriture interne uniquement
        Get
            Return privateAge
        End Get
        Private Set(ByVal value As Integer)
            privateAge = value
        End Set
    End Property

    Public Overrides Function ToString() As String 'Réécriture de la méthode ToString qui retourne l'initiale du Prénom.Nom
        Return String.Format("{0}.{1}", Prenom.Chars(0).ToString().ToUpper(), Nom.ToUpper())
    End Function

    Public Shared Function NouvellePersonne(ByVal Nom As String, ByVal Prenom As String, ByVal Age As Integer) As Personne 'méthode de classe pour une autre façon d'initialiser
        Return New Personne With {.Nom = Nom, .Prenom = Prenom, .Age = Age}
    End Function
End Class


Initialisation d'une List et la recherche
			Dim personnes As New List(Of Personne)()
			personnes.Add(New Personne("Sor", "Jean", Date.Parse("01/01/2002")))
			personnes.Add(New Personne("Di", "Alain", Date.Parse("01/01/2001")))
			personnes.Add(New Personne("Zètofrais", "Mélanie", Date.Parse("01/01/2000")))
			personnes.Add(New Personne("Croche", "Sara", Date.Parse("02/02/2011")))

			Dim recherche As List(Of Personne) = (
			    From p In personnes
			    Where p.Naissance > Date.Parse("31/12/2000") AndAlso p.Naissance < Date.Parse("01/02/2000")
			    Select p).ToList()
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021
4 août 2016 à 13:36
Salut super ta class.
Et le montage de class exactement ce que j ai besoin pour mes hamsters.
A+
0