树型控件排序
- 2017-09-15 14:59:44
- 黄善超
- 3463
- 最后编辑:tmtony8 于 2017-09-15 15:24:52
ctTree控件能够以任一列排序。这可通过两种不同的方法实现。第一种是标记一列为可排序列 (在创建列头的设计时做) 然后单击你想排序的列头。第二种是使用排序方法。当可见列被排序时,排序将会以列项目的字符数据为准。
排序也可以基于所有节点数据或只是一个父节点的子节点。排序方法的第二个参数用于确定如何进行排序。
非字符型数据排序
默认情况下, 数据是基于字符数据排序。但是, 当我们需要对整数,实数与日期进行排序时,这就不够了。在这种情况下,我们可以设置ColumnDataType属性匹配需要排序的数据类型。控件将自动以适当的方式排序。
树也能基于NodeCargo与 NodeData属性排序。举个例子, 下例中每当列2排序时,将会基于NodeData属性排序。
Private Sub ctTree_PreSort( ByVal nColumn as Integer )
If ( nColumn = 2 )
ctTree.SortNewColumn -1
End If
End Sub
如果-1值提供给SortColumn或SortNewColumn 属性/方法, 排序将基于NodeData 属性中的数据进行。 如果-2值提供给该属性, 排序将基于NodeCargo属性中的数据进行。
注意:在ctTree中不可能隐藏列, 不过你可以给不存在的列分配文本并且基于那笔数据排序。举个例子, 你可以定义3列但是为四列的每个列项目提供文本。如果我们基于第四列排序列表,我们本质上是以隐藏的列排序。
多列排序
允许同时排序至多三列。SortMultiColumns(多列排序)方法允许程序员指定至多三个不同列被排序。 即可用内部的也可用外部的PreSort方法。举例:
Private Sub ctTree_PreSort( ByVal nColumn as Integer ) if ( nColumn = 2 ) ctTree.SortMultiColumns nColumn, 3, 4 End If End Sub
或
ctTree.SortMultiColumns 1, 3, 4 ctTree.SortList
以下项目涉及控件排序:
项目 类型 访问属性
列头已经单击之后禁止列排序 void CancelSort
确定列是否可排序 boolean ColumnSortable
用于中断排序过程的事件 none PreSort
显示排序方向箭头 boolean SortArrows
排序列 . integer SortColumn
升序还是降序 integer SortDirection
指定当前列表是否已排序 boolean Sorted
在树中排序数据 boolean Sort
将要运行排序的数据列,仅在PreSort事件中有效 . integer SortNewColumn
确定排序是否对事件敏感 . boolean SortOnCase