原創|其它|編輯:郝浩|2011-08-12 14:47:31.000|閱讀 663 次
概述:開發人員可以對Spread表單中的行和列進行自動排序操作,如根據指定的列,以升序方式自動排序表單中的數據。同時,也可以顯示排序指示器。這些操作不會影響數據模型 僅僅涉及數據如何顯示。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
開發人員可以對Spread表單中的行和列進行自動排序操作,如根據指定的列,以升序方式自動排序表單中的數據。同時,也可以顯示排序指示器。這些操作不會影響數據模型 僅僅涉及數據如何顯示。
允許用戶自動地對行進行排序
你 可以設置表單以允許用戶在列首被點擊的情況下使用自動排序這一功能。當列首第一次被點擊(被選中)時,未排序的圖標就會顯示。第二次點擊時就會顯示排序圖 標并且會將列進行排序。如果用戶在相同的列上 連續點擊,那么排序的方向就會被反轉。這并不影響數據模型,只會影響數據如何顯示。下面的圖表顯示了未排序圖標。
使用Column對象的 AllowAutoSort 屬性或者SheetView對象的SetColumnAllowAutoSort 方法允許用戶點擊列首進行自動排序操作。設置列的SortIndicator屬性以顯示排序指示器。
設置SetColumShowSortIndicator方法或者ShowSortIndicator 屬性以顯示或隱藏排序指示器。排序指示器在列的頭部的顯示方式如下圖,它顯示了升序和降序的排序指示器。
升序指示器 |
降序指示器 |
![]() |
![]() |
當用戶排序數據時,排序之前會發生AutoSortingColumn事件,排序之后會發生AutoSortedColumn事件。
下面的示例顯示了對進行前面的30列進行自動排序:
fpSpread1.Sheets[0].Columns[0,29].AllowAutoSort = true; or fpSpread1.Sheets[0].SetColumnAllowAutoSort(0,30,true); |
使用自動排序
在 表單中,根據指定的鍵,使用AutoSortColumn方法對顯示區域進行排序操作。 并使用SetColumShowSortIndicator來設置是否顯示排序指示器。 AutoSortColumn方法進行的操作與點擊指定列的列首操作相同(如果此列的 AllowAutoSort屬性已被設為true)。如果同一個列索引成功調用此方法,那么排序的方向就會發生倒置。如果此方法被不同的列索引調用,那么 這之前的 已排序的列指示器就會被改回SortIndicator.None(如果有),并且表單以指定的列為鍵進行排序。 這些操作不會影響數據模型,只會影響數據顯示方式。這種方法的幾種不同的重載提供了不同的排序方式。
下面的這個示例自動的將第一列進行排序。
fpSpread1.ActiveSheet.SetColumnAllowAutoSort(0, true); fpSpread1.ActiveSheet.SetColumnShowSortIndicator(0, false); fpSpread1.ActiveSheet.AutoSortColumn(0); |
對若干行,列,或者一個區域進行排序
根據跟定列的值對整個表單的所有行進行排序是最常見的一種情況。同時Spread也允許你既可以對行或者列進行排序,又可以指定列或行作為關鍵字進行排列。這種排列對整個表單都有效。
通過使用SortColumns (或 SortRows)方法,以某個或某幾個行(或列)作為鍵,對表單中一定區域內的列或行進行排序。 這些操作不會影響數據模型,僅作用于數據的顯示。
你可以只對某一區域內的單元格的數據進行排序,這是相當有用的。舉例來講,當你想要進行根據數量的順序對許多行進行排序,但不包含最后一行統計數據,上面的 操作就相當有效。這種情況下,你可以在一個單元格區域內對數據進行排序,但是除掉最后一行,最后一行不參與排序。
在 某一區域內對數據進行排序的方式有兩種。對于綁定數據而言,使用SortRows方法和SortColumns方法, 同時在重載函數中傳入指定的參數,這樣你就可以指定哪個行區域或哪個列區域進行排序。對于非綁定數據而言,僅僅需要使用 SortRange方法。此方法不適用于綁定數據,因為操作產生的數據移動(并不是對整行整列生效)會影響源數據。
這段代碼根據第二列的數據對所有行進行篩選。(因為列索引是以零為基礎的,第二列的索引為1),排序指示器已經啟動。
fpoint1.ActiveSheet.SortRows(1,true,true); |
下面的示例顯示了使用預先定義過排序信息列表對第12行到第230行進行排序。
FarPoint.Win.Spread.SortInfo[] sorter = new FarPoint.Win.Spread.SortInfo[1]; sorter[0] = new FarPoint.Win.Spread.SortInfo(0, false, System.Collections.Comparer.Default);
fpoint1.ActiveSheet.SortColumns(12,230,sorter); |
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園