问题:我的代码需要进行哪些更改才能让我排序多次?
信息:
我有一个列表框,其中包含我正在编写的程序中的1000个样本货件,我发现通过点击按钮对这些货件进行分类的最简单方法就是这样:
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
这个问题是它只能工作一次。我目前有4个(Date Asc和Des,Status Asc和Des),可能有多达30个。我希望能够多次排序,但我不知道如何解决这个问题。我的直觉告诉我,问题在于“新”部分,但我不知道我应该把它放在哪里。
答案 0 :(得分:0)
我猜你的假设是关于它是如何工作的,所以让我通过回答来帮助你和我...
如果您的目标是按A列和B列排序,则可以执行以下操作:
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("A", _
ListSortDirection.Ascending))
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("B", _
ListSortDirection.Ascending))
可能导致以下顺序:
A B
1×
1个ž
2
2 d
如果您的目标是停止按A排序,现在按B排序,您可以执行以下操作:
' 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))
通过清除排序描述的集合,您将删除A的SortDescription并将其替换为B,而不是为B添加一个。这将产生以下顺序:
A B
2
2 d
1×
1 z