Todd MacPherson
asked on
How do I improve my listview sort utility to sort numerically.
Hello
I have some simple code to sort a listview (3 columns wide). When a user clicks the column header it will sort ascending or decending depending on the current state. Unfortunately it sorts numbers ascending as if they were text:
1
11
111
2
22
222
etc
I want it to sort ascending like:
1
2
11
22
111
222
Also the reverse (descending is true too)
Any help is appreciated
Dim pooX As Boolean
Private Sub lstMenu_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.Colum nClickEven tArgs) Handles lstMenu.ColumnClick
Dim lstCol As ColumnHeader
If pooX Then
lstMenu.Sorting = SortOrder.Ascending
pooX = False
Else
lstMenu.Sorting = SortOrder.Descending
pooX = True
End If
End Sub
I have some simple code to sort a listview (3 columns wide). When a user clicks the column header it will sort ascending or decending depending on the current state. Unfortunately it sorts numbers ascending as if they were text:
1
11
111
2
22
222
etc
I want it to sort ascending like:
1
2
11
22
111
222
Also the reverse (descending is true too)
Any help is appreciated
Dim pooX As Boolean
Private Sub lstMenu_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.Colum
Dim lstCol As ColumnHeader
If pooX Then
lstMenu.Sorting = SortOrder.Ascending
pooX = False
Else
lstMenu.Sorting = SortOrder.Descending
pooX = True
End If
End Sub
ASKER
That seems like a lot of complicated code for something that is so simple. I mean, to sort as if it were text is only 11 lines of code. It just blows me away that I have to make something that complicated to get such a simple result.
I will wait on this for a bit to see what others have to say. I appreciate the help thus far.
PBLack
I will wait on this for a bit to see what others have to say. I appreciate the help thus far.
PBLack
sorry, but MS did never try to sort a listview based on numerical data (as it seems).
that example is quite a lot of code - you could get away with far less, but you still need to effectively do the sorting (or at least the comparison operation for the sorting) with your own code.
in .NET 2.0 the datagridview can be used in a similar way to a details-view listview and its sorting works properly for numerics and dates. (listview sorts dates alphabetically too)
in .NET 2.0 the datagridview can be used in a similar way to a details-view listview and its sorting works properly for numerics and dates. (listview sorts dates alphabetically too)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Sancler for my purposes this was exactly what I needed.
Thanks for this and thanks to the others for their help
PBLack
Thanks for this and thanks to the others for their help
PBLack
http://www.planet-source-code.com/vb/scripts/ShowCode.ASP?txtCodeId=42&lngWId=10