views:

56

answers:

1

Question: What changes need to be made to my code to allow me to sort more than once?


Information:

I have a list box that contains 1000 sample shipments in it in the program I'm currently writing, I've found the easiest way to sort these shipments at the click of a button is like so:

Private Sub Date_Ascending_Selected(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Date_Ascending.Selected
    ShipmentsList.Items.SortDescriptions.Add(New SortDescription("ReceivedOn", ListSortDirection.Ascending))
End Sub

The problem with this is that it only works once. I have currently 4 of these (Date Asc and Des, Status Asc and Des) with potential for as many as 30. I would like to be able to sort more than once, but I'm not sure how to fix this. My gut tells me that the problem lies with the "New" part, but I don't know where else I should put it.

A: 

I'm guessing your assumptions as to how this works is incorrect, so let me make an ass out of you and me by answering...

If your goal is to sort by column A and column B, you would do something like the following:

ShipmentsList.Items.SortDescriptions.Add(New SortDescription("A", _
    ListSortDirection.Ascending))
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("B", _
    ListSortDirection.Ascending))

which might result in the following order:

A  B
1  x
1  z
2  a
2  d

If your goal is to stop sorting by A, and now sort by B, you'd do something like this:

' set initial sort
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("A", _
    ListSortDirection.Ascending))
'... later, we now want to sort by B
ShipmentsList.Items.SortDescriptions.Clear()
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("B", _
    ListSortDirection.Ascending))

By clearing out the collection of sort descriptions, you remove the SortDescription for A and replace it with one for B, rather than adding the one for B after. This would result in the following order:

A  B
2  a
2  d
1  x
1  z

Will
btw, if I get the VB syntax incorrect (comments, continue on next line) please forgive...
Will
Yep, That works. I feel silly now for not realizing that I needed to clear my sort before I could sort in a different way. >_< Thanks man.
Narcolapser