Recherche par date sur un datagridview

legr90 -  
ManuAntibes Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Utilisateur anonyme
     
    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
    1. ManuAntibes Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      Salut super ta class.
      Et le montage de class exactement ce que j ai besoin pour mes hamsters.
      A+
      0