A voir également:
- Recherche par date sur un datagridview
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche par image - Guide
- Comment ouvrir un fichier dat - Guide
- Trier par date excel - Guide
- Retrouver une publication facebook par date - Guide
1 réponse
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)
Initialisation d'une List et la recherche
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()
Et le montage de class exactement ce que j ai besoin pour mes hamsters.
A+