天天看點

Spread for Windows Forms快速入門(13)---資料排序

開發人員可以對Spread表單中的行和列進行自動排序操作,如根據指定的列,以升序方式自動排序表單中的資料。同時,也可以顯示排序訓示器。這些操作不會影響資料模型 僅僅涉及資料如何顯示。

你可以設定表單以允許使用者在列首被點選的情況下使用自動排序這一功能。當列首第一次被點選(被選中)時,未排序的圖示就會顯示。第二次點選時就會顯示排序圖示并且會将列進行排序。如果使用者在相同的列上 連續點選,那麼排序的方向就會被反轉。這并不影響資料模型,隻會影響資料如何顯示。下面的圖表顯示了未排序圖示。

Spread for Windows Forms快速入門(13)---資料排序

使用Column對象的 AllowAutoSort 屬性或者SheetView對象的SetColumnAllowAutoSort 方法允許使用者點選列首進行自動排序操作。設定列的SortIndicator屬性以顯示排序訓示器。

設定SetColumShowSortIndicator方法或者ShowSortIndicator 屬性以顯示或隐藏排序訓示器。排序訓示器在列的頭部的顯示方式如下圖,它顯示了升序和降序的排序訓示器。

升序訓示器

降序訓示器

Spread for Windows Forms快速入門(13)---資料排序
Spread for Windows Forms快速入門(13)---資料排序

當使用者排序資料時,排序之前會發生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);

附:Spread for Windows Forms快速入門系列文章

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/01/2123957.html">Spread for Windows Forms快速入門(1)---開始使用Spread</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/02/2124512.html">Spread for Windows Forms快速入門(2)---設定Spread表單</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/02/2125325.html">Spread for Windows Forms快速入門(3)---行列操作</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/04/2127038.html">Spread for Windows Forms快速入門(4)---常用的單元格類型(上)</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/05/2128501.html">Spread for Windows Forms快速入門(5)---常用的單元格類型(下)</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/08/2130786.html">Spread for Windows Forms快速入門(6)---定義單元格的外觀</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/08/2130997.html">Spread for Windows Forms快速入門(7)---單元格的互動操作</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/09/2131817.html">Spread for Windows Forms快速入門(8)---單元格中使用者動作出發的事件</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/09/2132537.html">Spread for Windows Forms快速入門(9)---使用公式</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/10/2133759.html">Spread for Windows Forms快速入門(10)---綁定到資料庫</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/11/2134693.html">Spread for Windows Forms快速入門(11)---資料篩選</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/11/2135245.html">Spread for Windows Forms快速入門(12)---資料分組(Outlook風格)</a>

相關閱讀:

<a href="http://www.cnblogs.com/powertoolsteam/archive/2013/05/27/3101816.html" target="_blank">Spread for Windows Forms 7新功能使用指南</a>

<a href="http://blog.gcpowertools.com.cn/post/Spread-Studio-101-Release.aspx" target="_blank">Spread Studio 10.0v1 釋出</a>

<a href="http://blog.gcpowertools.com.cn/post/Spread-JS-101-Release.aspx" target="_blank">SpreadJS 10.0v1 釋出</a>