我正在尝试在Janus GridEx控件中实现自定义分组。我有一个数据为DateTime的列,但是当我对该列进行分组时,我希望数据仅基于该数据的Date部分进行分组。
阅读Janus文档,看起来将GroupComparer添加到Column应该可以实现:
' Code that sets up my Janus GridEx
...
...
grdResults.RootTable.Columns("DateDue").GroupComparer = New GroupByDateComparer()
...
...
我的IComparer课程......
Public Class GroupByDateComparer
Implements IComparer
Public Function Compare(a As Object, b As Object) As Integer _
Implements IComparer.Compare
Select Case DateDiff(DateInterval.Day, a.Date, b.Date)
Case Is < 0
Return -1
Case 0
Return 0
Case Is > 0
Return 1
End Select
Return 0
End Function
End Class
我的代码构建。 我将新实例分配给GroupComparer的代码行运行。 但是从不调用Compare()函数。
有没有人设法实现Janus GridEx控件的这个功能?
答案 0 :(得分:0)
我现在已经使用了Janus一段时间(我认为10年......)但是我从来没有使用该方法来排序日期列(我使用格式dd / MM / yyyy)。第一点,如果数据类型为&#34;日期&#34;,无论您用于显示该日期的格式掩码,都将自动进行排序。但是,如果列的数据类型为&#34; String&#34;,则将使用字母比较进行排序。
第二点,属性GroupComparer用于对组而不是项进行排序。假设您有一个复杂的分组规则,其组标题与排序无关,那么您可以创建一个GroupComparer来按您希望的方式进行排序。
也许您可以开始仔细检查列的数据类型吗?
希望这会有所帮助 谢尔文
答案 1 :(得分:0)
好吧,它花了我应该的时间。事实证明,Comparer工作得很好,但它并没有“坚持”到专栏。我发现如果我检查它是否存在于RootTableChanged事件中并重新附加它,如果不是它一切正常......
Private Sub grdResults_RootTableChanged(sender As Object, e As EventArgs) _
Handles grdResults.RootTableChanged
If grdResults.RootTable.Columns.Contains("DateDue") AndAlso _
grdResults.RootTable.Columns("DateDue").GroupComparer Is Nothing Then
grdResults.RootTable.Columns("DateDue").GroupComparer = New GroupByDateComparer()
End If
End Sub