Linux sorting fix for issue #120
This commit is contained in:
@@ -12,6 +12,8 @@ Public Class frmSessions
|
|||||||
Private bEndSortAsc As Boolean = True
|
Private bEndSortAsc As Boolean = True
|
||||||
Private iEndDataCol As Integer
|
Private iEndDataCol As Integer
|
||||||
Private iEndDisplayCol As Integer
|
Private iEndDisplayCol As Integer
|
||||||
|
Private bHoursSortAsc As Boolean = True
|
||||||
|
Private iHoursCol As Integer
|
||||||
|
|
||||||
Private Sub FormatGrid()
|
Private Sub FormatGrid()
|
||||||
'Build Columns
|
'Build Columns
|
||||||
@@ -28,10 +30,12 @@ Public Class frmSessions
|
|||||||
iStartDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("Start"))
|
iStartDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("Start"))
|
||||||
iEndDataCol = dgSessions.Columns.IndexOf(dgSessions.Columns("EndUnix"))
|
iEndDataCol = dgSessions.Columns.IndexOf(dgSessions.Columns("EndUnix"))
|
||||||
iEndDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("End"))
|
iEndDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("End"))
|
||||||
|
iHoursCol = dgSessions.Columns.IndexOf(dgSessions.Columns("Hours"))
|
||||||
|
|
||||||
'Set Sorting
|
'Set Sorting
|
||||||
dgSessions.Columns("Start").SortMode = DataGridViewColumnSortMode.Programmatic
|
dgSessions.Columns("Start").SortMode = DataGridViewColumnSortMode.Programmatic
|
||||||
dgSessions.Columns("End").SortMode = DataGridViewColumnSortMode.Programmatic
|
dgSessions.Columns("End").SortMode = DataGridViewColumnSortMode.Programmatic
|
||||||
|
dgSessions.Columns("Hours").SortMode = DataGridViewColumnSortMode.Programmatic
|
||||||
|
|
||||||
'Hide Columns
|
'Hide Columns
|
||||||
dgSessions.Columns("MonitorID").Visible = False
|
dgSessions.Columns("MonitorID").Visible = False
|
||||||
@@ -147,6 +151,7 @@ Public Class frmSessions
|
|||||||
Private Sub ClearManualSortGlyphs()
|
Private Sub ClearManualSortGlyphs()
|
||||||
dgSessions.Columns(iStartDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None
|
dgSessions.Columns(iStartDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None
|
||||||
dgSessions.Columns(iEndDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None
|
dgSessions.Columns(iEndDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None
|
||||||
|
dgSessions.Columns(iHoursCol).HeaderCell.SortGlyphDirection = SortOrder.None
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Function GetSortOrder(ByVal bToggle As Boolean, ByVal iCol As Integer) As ListSortDirection
|
Private Function GetSortOrder(ByVal bToggle As Boolean, ByVal iCol As Integer) As ListSortDirection
|
||||||
@@ -173,6 +178,15 @@ Public Class frmSessions
|
|||||||
Case iEndDisplayCol
|
Case iEndDisplayCol
|
||||||
bEndSortAsc = Not bEndSortAsc
|
bEndSortAsc = Not bEndSortAsc
|
||||||
dgSessions.Sort(dgSessions.Columns(iEndDataCol), GetSortOrder(bEndSortAsc, iCol))
|
dgSessions.Sort(dgSessions.Columns(iEndDataCol), GetSortOrder(bEndSortAsc, iCol))
|
||||||
|
Case iHoursCol
|
||||||
|
bHoursSortAsc = Not bHoursSortAsc
|
||||||
|
If bHoursSortAsc Then
|
||||||
|
dgSessions.Sort(New RowComparer(SortOrder.Ascending, iHoursCol))
|
||||||
|
dgSessions.Columns(iHoursCol).HeaderCell.SortGlyphDirection = SortOrder.Ascending
|
||||||
|
Else
|
||||||
|
dgSessions.Sort(New RowComparer(SortOrder.Descending, iHoursCol))
|
||||||
|
dgSessions.Columns(iHoursCol).HeaderCell.SortGlyphDirection = SortOrder.Descending
|
||||||
|
End If
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -224,4 +238,33 @@ Public Class frmSessions
|
|||||||
Private Sub dgSessions_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgSessions.ColumnHeaderMouseClick
|
Private Sub dgSessions_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgSessions.ColumnHeaderMouseClick
|
||||||
HandleSort(e.ColumnIndex)
|
HandleSort(e.ColumnIndex)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Class RowComparer
|
||||||
|
Implements System.Collections.IComparer
|
||||||
|
|
||||||
|
Private sortOrderModifier As Integer = 1
|
||||||
|
Private iSortCol As Integer = 0
|
||||||
|
|
||||||
|
Public Sub New(ByVal sortOrder As SortOrder, ByVal iCol As Integer)
|
||||||
|
iSortCol = iCol
|
||||||
|
|
||||||
|
If sortOrder = SortOrder.Descending Then
|
||||||
|
sortOrderModifier = -1
|
||||||
|
ElseIf sortOrder = SortOrder.Ascending Then
|
||||||
|
sortOrderModifier = 1
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
|
||||||
|
Implements System.Collections.IComparer.Compare
|
||||||
|
|
||||||
|
Dim DataGridViewRow1 As DataGridViewRow = CType(x, DataGridViewRow)
|
||||||
|
Dim DataGridViewRow2 As DataGridViewRow = CType(y, DataGridViewRow)
|
||||||
|
|
||||||
|
Dim CompareResult As Integer = If(CDec(DataGridViewRow1.Cells(iSortCol).Value) < CDec(DataGridViewRow2.Cells(iSortCol).Value), -1, 1)
|
||||||
|
|
||||||
|
Return CompareResult * sortOrderModifier
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
Reference in New Issue
Block a user