通过代码排序
使用列的 TreeListColumn.SortOrder 属性为它应用排序。 要以升序对列的取值排序,则把 TreeListColumn.SortOrder 属性设置为 SortOrder.Ascending 值。 要以降序对列的取值排序,则把该属性设置为 SortOrder.Descending 值。
要移除列的排序,则把它的 TreeListColumn.SortOrder 属性设置为 SortOrder.None 值。 如果需要移除所有列的排序设置,则调用树状列表的 TreeList.ClearSorting 方法。
下列代码展示了如何按照 Department 列以升序对数据排序:
C# | 复制代码 |
---|---|
treeList1.Columns["Department"].SortOrder = SortOrder.Ascending;
|
Visual Basic | 复制代码 |
---|---|
TreeList1.Columns("Department").SortOrder = SortOrder.Ascending
|
一旦改变列的排序顺序,则树状列表的节点被重新排列和重新绘制。 如果按照几个列排序,则节点被重新排列与排序中包含的列数一样多的次数。 可以使用 TreeList.BeginSort 和 TreeList.EndSort 方法避免此问题。 第一个方法防止 XtraTreeList 控件重新排列其节点作为排序结果,直至调用第二个方法。 这样允许按照几个列应用排序,而只重新排列节点一次。
排序的列数由 TreeList.SortedColumnCount 属性返回。 列的 TreeListColumn.SortIndex 属性允许确定它在被排序列的列表中的位置。 可以使用 TreeList.GetSortColumn 方法访问包含在排序中的列。
当列的排序设置被改变时,树状列表执行下列操作:
- 引发 TreeList.StartSorting 事件;
- 根据设置对数据排序;
- 引发 TreeList.EndSorting 事件。
示例
下面的示例代码演示了如何对 Department 和 Budget 列应用排序。 通过 TreeListColumn.SortOrder 属性对数据排序。 为了避免过度更新,代码被封闭在 TreeList.BeginSort 和 TreeList.EndSort 方法之间。
C# | 复制代码 |
---|---|
using DevExpress.XtraTreeList.Columns; //... treeList1.BeginSort(); treeList1.Columns["Department"].SortOrder = SortOrder.Ascending; treeList1.Columns["Budget"].SortOrder = SortOrder.Descending; treeList1.EndSort(); |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraTreeList.Columns ' ... TreeList1.BeginSort() TreeList1.Columns("Department").SortOrder = SortOrder.Ascending TreeList1.Columns("Budget").SortOrder = SortOrder.Descending TreeList1.EndSort() |
示例
下面的示例代码使用 TreeList.GetSortColumn 方法和 TreeList.SortedColumnCount 属性来遍历排序涉及到的列。
C# | 复制代码 |
---|---|
using DevExpress.XtraTreeList.Columns; // ... for(int i = 0; i < treeList1.SortedColumnCount; i++) { TreeListColumn sortedColumn = treeList1.GetSortColumn(i); // perform desired operations on a sorted column here //... } |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraTreeList.Columns ' ... Dim I As Integer For I = 0 To TreeList1.SortedColumnCount - 1 Dim SortedColumn As TreeListColumn = TreeList1.GetSortColumn(I) ' perform desired operations on a sorted column here '... Next |