2012-12-06 17 views
0

我試圖在Janus GridEx控件中實現自定義分組。我有一個數據是DateTime的列,但是當我在該列上分組時,我希望數據僅基於該數據的Date部分進行分組。試圖在Janus GridEx控件中實現自定義分組

讀劍鋒文檔,它看起來像添加GroupComparer到列要做到這一點:

' 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

好了,我花了超過它應該有。事實證明,比較器工作得很完美,但它並沒有「粘」到列上。我發現,如果我檢查它是否在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 
0

我一直在使用Janus一段時間(10年,我認爲...)但我從來沒有必須使用該方法來排序日期列(我使用格式dd/MM/yyyy)。首先,如果數據類型是「日期」,則無論使用什麼格式掩碼來顯示該日期,排序都將自動完成。但是,如果列的數據類型是「字符串」,那麼將通過使用字母比較來進行排序。

第二點屬性GroupComparer用於排序組而不是項目。假設您有一個複雜的分組規則,並且該分組規則與該排序不相關,那麼您可以創建一個GroupComparer以按照您想要的方式排序。

也許你可以開始仔細檢查你的列的數據類型?

希望這有助於 塞爾

+0

你好嗶嘰,列絕對是一個日期。它排序正確,只是當我按該列進行分組時,它基於確切的日期時間進行分組,並且我希望當天的所有項目可以組合在一起。 –