Imports System Imports System.ComponentModel Class LaClassDeScn Implements INotifyPropertyChanged ''<summary> '' Construit une instance à partir des paramètres d'entrée, ceux ci peuvent être issus de la BDD ou d'ailleur '' </summary> '' <param name="LaDate"></param> '' <param name="ChiffreAffaire"></param> '' <param name="LaCondition"></param> Public Sub New(ByVal LaDate As DateTime, ByVal ChiffreAffaire As Double, ByVal LaCondition As String) MaDate = LaDate CA = ChiffreAffaire Condition = LaCondition End Sub Private laDate As DateTime '' <summary> '' Date issue de la BDD et affichée dans le Datagriview '' </summary> Public Property MaDate As DateTime Get Return laDate End Get Set(ByVal Value As DateTime) If laDate <> Value Then laDate = Value GenerePropertyChanged("Date") End If End Set End Property Private chiffreAffaire As Double '' <summary> '' Chiffre d'affaire issu de la BDD et affiché dans le datagridview '' </summary> Public Property CA As Double Get Return chiffreAffaire End Get Set(ByVal Value As Double) If chiffreAffaire <> Value Then chiffreAffaire = Value GenerePropertyChanged("CA") End If End Set End Property Private laCondition As String '' <summary> '' Condition à vérifier lors du click sur la case à cocher '' </summary> Public Property Condition As String Get Return laCondition End Get Set(ByVal Value As String) If laCondition <> Value Then laCondition = Value GenerePropertyChanged("Condition") End If End Set End Property Private caseAcocher As Boolean '' <summary> '' Propriété correspondant au checkbox '' </summary> Public Property Coche As Boolean Get Return caseAcocher End Get Set(ByVal Value As Boolean) If caseAcocher <> Value Then If Condition = "A" Then 'on vérifie la condition, le champ n'est mis à jour que si elle est ok caseAcocher = Value End If 'qu'elle soit bonne ou pas on signale au binding un changement, ainsi la coche dans le datagridview sera effacée si besoin GenerePropertyChanged("Coche") End If End Set End Property #Region "INotifyPropertyChanged" Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Private Sub GenerePropertyChanged(ByVal Propriete As String) RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Propriete)) End Sub #End Region End Class
Private lesDonnees As List(Of LaClassDeScn) = New List(Of LaClassDeScn) 'déclaration de la collection Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'pour l'exemple, je crée une liste de LaClassDeScn en dur dans le code. 'si tu optes pour cette méthode, tu créeras cette liste à partir de ta base de données, en boucle au lieu de charger le datagridview lesDonnees.Add(New LaClassDeScn(DateTime.Parse("01/09/2019"), 40.9, "Konichiwa")) lesDonnees.Add(New LaClassDeScn(DateTime.Parse("01/09/2019"), 27.3, "Coucou")) lesDonnees.Add(New LaClassDeScn(DateTime.Parse("01/09/2019"), 30.5, "Hello")) lesDonnees.Add(New LaClassDeScn(DateTime.Parse("01/08/2019"), 17.4, "A")) lesDonnees.Add(New LaClassDeScn(DateTime.Parse("01/08/2019"), 38.1, "Hallo")) lesDonnees.Add(New LaClassDeScn(DateTime.Parse("01/08/2019"), 6, "Guten tag")) 'ici on on affecte la liste comme source de donnée du bindingSource LaClassDeScnBindingSource.DataSource = lesDonnees 'pour l'affichage par défaut rien d'autre à faire
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'tri par date croissante, puis par CA décroissant LaClassDeScnBindingSource.DataSource = lesDonnees.OrderBy(Function(x) x.MaDate).ThenByDescending(Function(x) x.CA) 'et ya rien d'autre à faire End Sub End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe peut la rendre en lançant une lecture avec tri de la table
1 - Si je recharge le DataGridView, je vais perdre la connaissance des cases qui ont 2 - J'ai crypté mes informations avant de les écrire, aussi je suis obligé de les décrypter avant de les utiliser, donc je ne peux automatiser la lecture ou l'écriture été cochées