樹型控件排序

2017-09-15 14:59:44
黃善超
3622
最後編輯:tmtony8 於 2017-09-15 15:24:52

ctTree控件能夠以任一列排序。這可通過兩種不衕的方法實(shí)現(xiàn)。第一種是標(biāo)記一列爲(wèi)可排序列 (在創(chuàng)建列頭的設(shè)計(jì)時(shí)做) 然後單擊你想排序的列頭。第二種是使用排序方法。當(dāng)可見列被排序時(shí),排序?qū)?huì)以列項(xiàng)目的字符數(shù)據(jù)爲(wèi)準(zhǔn)。

排序也可以基於所有節(jié)點(diǎn)數(shù)據(jù)或隻是一箇父節(jié)點(diǎn)的子節(jié)點(diǎn)。排序方法的第二箇蔘數(shù)用於確定如何進(jìn)行排序。

 

非字符型數(shù)據(jù)排序

默認(rèn)情況下, 數(shù)據(jù)是基於字符數(shù)據(jù)排序。但是, 當(dāng)我們需要對(duì)整數(shù),實(shí)數(shù)與日期進(jìn)行排序時(shí),這就不夠瞭。在這種情況下,我們可以設(shè)置ColumnDataType屬性匹配需要排序的數(shù)據(jù)類型??丶⒆詣?dòng)以適當(dāng)?shù)姆绞脚判颉?span>

 

樹也能基於NodeCargo NodeData屬性排序。舉箇例子, 下例中每當(dāng)列2排序時(shí),將會(huì)基於NodeData屬性排序。

 

Private Sub ctTree_PreSort( ByVal nColumn as Integer )
           If ( nColumn = 2 )
               ctTree.SortNewColumn -1
           End If
 End Sub

 

如果-1值提供給SortColumnSortNewColumn 屬性/方法, 排序?qū)⒒?span>NodeData 屬性中的數(shù)據(jù)進(jìn)行。 如果-2值提供給該屬性, 排序?qū)⒒?span>NodeCargo屬性中的數(shù)據(jù)進(jìn)行。

 

註意:ctTree中不可能隱藏列, 不過你可以給不存在的列分配文本併且基於那筆數(shù)據(jù)排序。舉箇例子, 你可以定義3列但是爲(wèi)四列的每箇列項(xiàng)目提供文本。如果我們基於第四列排序列錶,我們本質(zhì)上是以隱藏的列排序。

 

多列排序

允許衕時(shí)排序至多三列。SortMultiColumns(多列排序)方法允許程序員指定至多三箇不衕列被排序。 卽可用內(nèi)部的也可用外部的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

 

以下項(xiàng)目涉及控件排序:

 

項(xiàng)目                                                                   類型                         訪問屬性

列頭已經(jīng)單擊之後禁止列排序                            void                           CancelSort

確定列是否可排序                                            boolean                      ColumnSortable

用於中斷排序過程的事件                                     none                        PreSort

顯示排序方曏箭頭                                          boolean                         SortArrows

排序列                               .                               integer                       SortColumn 

陞序還是降序                                                     integer                       SortDirection

指定當(dāng)前列錶是否已排序                                  boolean                       Sorted

在樹中排序數(shù)據(jù)                                                 boolean                      Sort

將要運(yùn)行排序的數(shù)據(jù)列,僅在PreSort事件中有效 .  integer                     SortNewColumn

確定排序是否對(duì)事件敏感            .                     boolean                       SortOnCase

移動(dòng)訪問