ユーザーが列ヘッダをクリックしたとき、クリックした列の値で一覧の表示順序を並び替えるように設定できます。
この操作をすべての列で有効にするには、コントロールの CanUserSortColumns プロパティを true に設定します。特定の列に対して有効にするには、列の CanUserSort プロパティを true に設定します。
ユーザーは [Ctrl] キーを押しながら複数の列で並び替えを実行できます。
並び替えが実行されたとき、コントロールの Sorted イベントが発生します。
先頭および末尾の行が固定されているとき、SortIgnoreFrozenRows プロパティを使用して固定行をソートの対象外とするかどうかを設定できます。ソートの対象外とするにはこのプロパティを true に設定します。
並び替えを実行したとき、列ヘッダに並び替え順(昇順/降順)を示すインジケータが表示されます。インジケータに関する設定は次のとおりです。
プロパティ | 説明 |
---|---|
ShowSortIndicator | 各列でインジケータを表示するかどうか設定します。 |
SortIndicatorIndex | 複数行の列ヘッダで、インジケータをどの行に表示するかを設定します。すべての列に対して設定するには列ヘッダの SortIndicatorIndex プロパティを、特定の列に対して設定するには列の SortIndicatorIndex プロパティを設定します。 |
コントロールの SortDescriptions プロパティで並び替えた列の情報のコレクションを参照できます。
次のサンプルコードは Sorted イベントで並び替えた列のインデックスと並び順(昇順/降順)を取得します。
XAML |
コードのコピー |
---|---|
<sg:GcSpreadGrid Name="gcSpreadGrid1" Sorted="gcSpreadGrid1_Sorted"/> |
C# |
コードのコピー |
---|---|
private void gcSpreadGrid1_Sorted(object sender, EventArgs e){ foreach (SpreadSortDescription sinfo in gcSpreadGrid1.SortDescriptions) Debug.WriteLine(string.Format("Sorted by Column:{0}, Direction:{1}", sinfo.ColumnIndex, sinfo.Direction)); } |
Visual Basic |
コードのコピー |
---|---|
Private Sub gcSpreadGrid1_Sorted(sender As System.Object, e As System.EventArgs) For Each sinfo As SpreadSortDescription In gcSpreadGrid1.SortDescriptions Debug.WriteLine(String.Format("Sorted by Column:{0}, Direction:{1}", sinfo.ColumnIndex, sinfo.Direction)) Next End Sub |
デフォルトでは、ソートを実行した後でデータを入力または変更すると、新たなデータにもとづいてソート処理が自動的に実行されます。セルの入力直後に自動的にソートが行われるため、データ入力作業中にこの動作を抑止したい場合は、AutoSortFilter プロパティを false に設定します。