Results 1 to 11 of 11

Thread: How to simple sort a ListView? (RESOLVED)

  1. #1

    Thread Starter
    Addicted Member AlvaroF1's Avatar
    Join Date
    Sep 2002
    Location
    SP - Brazil
    Posts
    200

    Question 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:
    1. Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)
    2.     With ListView1
    3.         If .SortKey <> ColumnHeader.Index - 1 Then
    4.             .SortKey = ColumnHeader.Index - 1
    5.             .SortOrder = 0
    6.         Else
    7.             If .SortOrder = 0 Then
    8.                 .SortOrder = 1
    9.             Else
    10.                 .SortOrder = 0
    11.             End If
    12.         End If
    13.     End With
    14. End Sub
    What about VB .NET?


    Thanks.
    Last edited by AlvaroF1; Aug 11th, 2003 at 02:38 PM.

  2. #2
    Frenzied Member DevGrp's Avatar
    Join Date
    Nov 2001
    Location
    Charlotte, NC
    Posts
    1,256
    You have to implement the IComparer interface. I post some code when I get home.

  3. #3

    Thread Starter
    Addicted Member AlvaroF1's Avatar
    Join Date
    Sep 2002
    Location
    SP - Brazil
    Posts
    200
    Ok, thank you. I'm waiting for it...

  4. #4
    Frenzied Member DevGrp's Avatar
    Join Date
    Nov 2001
    Location
    Charlotte, NC
    Posts
    1,256
    Here ya go.
    Attached Files Attached Files

  5. #5
    Frenzied Member DevGrp's Avatar
    Join Date
    Nov 2001
    Location
    Charlotte, NC
    Posts
    1,256
    Sorry double post

  6. #6

    Thread Starter
    Addicted Member AlvaroF1's Avatar
    Join Date
    Sep 2002
    Location
    SP - Brazil
    Posts
    200
    Thanks man, but I get a CRC error every time I download it.

    Could you post it again?


    Thank you.

  7. #7
    Frenzied Member DevGrp's Avatar
    Join Date
    Nov 2001
    Location
    Charlotte, NC
    Posts
    1,256
    Here ya go
    Attached Files Attached Files

  8. #8

    Thread Starter
    Addicted Member AlvaroF1's Avatar
    Join Date
    Sep 2002
    Location
    SP - Brazil
    Posts
    200
    Thank you. Now it's all right.

    Can I ask you something? How to sort Ascending when Descending and vice-versa?


    Thanks again.

  9. #9

    Thread Starter
    Addicted Member AlvaroF1's Avatar
    Join Date
    Sep 2002
    Location
    SP - Brazil
    Posts
    200
    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:
    1. Friend Class Form1
    2.  
    3.     Private Sub ListView1_ColumnClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lvAd.ColumnClick
    4.         If e.Column <> sortColumn Then
    5.             sortColumn = e.Column
    6.             ListView1.Sorting = SortOrder.Ascending
    7.         Else
    8.             If ListView1.Sorting = SortOrder.Ascending Then
    9.                 ListView1.Sorting = SortOrder.Descending
    10.             Else
    11.                 ListView1.Sorting = SortOrder.Ascending
    12.             End If
    13.         End If
    14.         ListView1.Sort()
    15.         ListView1.ListViewItemSorter = New Comparer(e.Column, ListView1.Sorting)
    16.     End Sub
    17.  
    18. End Class
    19.  
    20. Class Comparer
    21.  
    22.     Implements IComparer
    23.  
    24.     Private Col As Integer
    25.     Private Order As SortOrder
    26.  
    27.     Public Sub New()
    28.         Col = 0
    29.         Order = SortOrder.Ascending
    30.     End Sub
    31.  
    32.     Public Sub New(ByVal column As Integer, ByVal order As SortOrder)
    33.         Col = column
    34.         Me.Order = order
    35.     End Sub
    36.  
    37.     Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
    38.         Dim returnVal As Integer = -1
    39.         returnVal = String.Compare(CType(x, ListViewItem).SubItems(Col).Text, CType(y, ListViewItem).SubItems(Col).Text)
    40.         If Order = SortOrder.Descending Then returnVal *= -1
    41.         Return returnVal
    42.     End Function
    43.  
    44. End Class

  10. #10
    Addicted Member craigreilly's Avatar
    Join Date
    Jul 2004
    Location
    Scottsdale, AZ
    Posts
    188
    it is telling me that sortcolumn is not 'dim'ed. What do you declare it as?

  11. #11
    Addicted Member craigreilly's Avatar
    Join Date
    Jul 2004
    Location
    Scottsdale, AZ
    Posts
    188
    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
  •  



Click Here to Expand Forum to Full Width