[英]BindingSource.Sort on Structures in VB.NET
我有一個帶有兩個Dates
的Structure
,一個Sub New
和一個Function ToString()
。 我還有一個DataGridView
,綁定到BindingSource
,綁定到綁定到DataTable containing objects of my structure
綁定源。 我現在正在使用BindingSource.Sort
來訂購我的DataGridView。 BindingSource如何排序我的Structure對象(看起來像String?),如何調整它? 我是否需要調整結構,繼承BindingSource-Class或如何開始?
PS。 該結構僅是示例。 我將來可能會更復雜。
Public Structure dateRange
Public date1 As Date
Public date2 As Date
Sub New(newdt1 As Date, newdt2 As Date)
date1=newdt1
date2=newdt2
End Sub
Public Overrides Function ToString() As String
Return date1.ToString & " - " & date2.ToString
End Function
End Structure
如果要讓類型具有默認的排序模式,則需要實現IComparable
和/或IComparable(Of T)
接口。 兩者都被認為是好的做法。 例如
Public Structure DateRange
Implements IComparable, IComparable(Of DateRange)
Public ReadOnly Property StartDate As Date
Public ReadOnly Property EndDate As Date
Public Sub New(startDate As Date, endDate As Date)
Me.StartDate = startDate
Me.EndDate = endDate
End Sub
Public Overrides Function ToString() As String
Return $"{StartDate} - {EndDate}"
End Function
Public Function CompareTo(obj As Object) As Integer Implements IComparable.CompareTo
Return CompareTo(DirectCast(obj, DateRange))
End Function
Public Function CompareTo(other As DateRange) As Integer Implements IComparable(Of DateRange).CompareTo
'Sort by start date by default.
Dim result = StartDate.CompareTo(other.StartDate)
If result = 0 Then
'Start dates are the same so sort by end date.
result = EndDate.CompareTo(other.EndDate)
End If
Return result
End Function
End Structure
請注意,此實現利用Date
類型提供的實現來完成繁重的工作。
您可以在此處閱讀有關排序列表的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.