|
-
Jun 28th, 2003, 01:13 PM
#1
Thread Starter
Addicted Member
How to simple sort a ListView? (RESOLVED)
I'd like to sort a ListView (View = Details) by the clicked column (ascending or descending).
I was using this code to do it (VB6):
VB Code:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)
With ListView1
If .SortKey <> ColumnHeader.Index - 1 Then
.SortKey = ColumnHeader.Index - 1
.SortOrder = 0
Else
If .SortOrder = 0 Then
.SortOrder = 1
Else
.SortOrder = 0
End If
End If
End With
End Sub
What about VB .NET?
Thanks.
Last edited by AlvaroF1; Aug 11th, 2003 at 02:38 PM.
-
Jun 28th, 2003, 01:15 PM
#2
Frenzied Member
You have to implement the IComparer interface. I post some code when I get home.
-
Jun 29th, 2003, 12:17 PM
#3
Thread Starter
Addicted Member
Ok, thank you. I'm waiting for it...
-
Jun 29th, 2003, 05:34 PM
#4
Frenzied Member
-
Jun 29th, 2003, 05:34 PM
#5
Frenzied Member
-
Jul 1st, 2003, 09:42 PM
#6
Thread Starter
Addicted Member
Thanks man, but I get a CRC error every time I download it.
Could you post it again?
Thank you.
-
Jul 1st, 2003, 09:48 PM
#7
Frenzied Member
-
Jul 2nd, 2003, 10:38 PM
#8
Thread Starter
Addicted Member
Thank you. Now it's all right.
Can I ask you something? How to sort Ascending when Descending and vice-versa?
Thanks again.
-
Aug 11th, 2003, 02:37 PM
#9
Thread Starter
Addicted Member
Originally posted by AlvaroF1
Thank you. Now it's all right.
Can I ask you something? How to sort Ascending when Descending and vice-versa?
Thanks again.
VB Code:
Friend Class Form1
Private Sub ListView1_ColumnClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lvAd.ColumnClick
If e.Column <> sortColumn Then
sortColumn = e.Column
ListView1.Sorting = SortOrder.Ascending
Else
If ListView1.Sorting = SortOrder.Ascending Then
ListView1.Sorting = SortOrder.Descending
Else
ListView1.Sorting = SortOrder.Ascending
End If
End If
ListView1.Sort()
ListView1.ListViewItemSorter = New Comparer(e.Column, ListView1.Sorting)
End Sub
End Class
Class Comparer
Implements IComparer
Private Col As Integer
Private Order As SortOrder
Public Sub New()
Col = 0
Order = SortOrder.Ascending
End Sub
Public Sub New(ByVal column As Integer, ByVal order As SortOrder)
Col = column
Me.Order = order
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim returnVal As Integer = -1
returnVal = String.Compare(CType(x, ListViewItem).SubItems(Col).Text, CType(y, ListViewItem).SubItems(Col).Text)
If Order = SortOrder.Descending Then returnVal *= -1
Return returnVal
End Function
End Class
-
Jul 21st, 2004, 07:57 PM
#10
Addicted Member
it is telling me that sortcolumn is not 'dim'ed. What do you declare it as?
-
Jul 21st, 2004, 08:18 PM
#11
Addicted Member
I get this error (see attached) when reloading the data into my listview if I have previously sorted it.
Any ideas.
It happens on this line:
Code:
returnVal = String.Compare(CType(x, ListViewItem).SubItems(Col).Text, CType(y, ListViewItem).SubItems(Col).Text)
Your help, as always, is much appreciated.
Last edited by craigreilly; Jun 3rd, 2006 at 12:51 PM.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|