GanttView for WPF
並べ替え

並べ替えは、指定した順序でデータを表示するために役立ち、データ管理には重要な要件です。GanttView コントロールでは、GanttView ツールバーの[並べ替え]ボタンにあるさまざまなソートオプションを使用し、タスク名、開始日/終了日、および期間に基づいてタスクを並べ替えできます。

Lets discuss how you can apply sorting in GanttView.

Apply Sort

To apply sorting in GanttView, you can use SortTasks method of the C1GanttView class. The SortTasks method has two overloads which are discussed in the following table.

Overload Description
SortTasks(System.Collections.Generic.IComparer<C1.GanttView.Task> nextComparer) Sorts all the tasks by given comparer.
SortTasks(System.ComponentModel.PropertyDescriptor prop, System.ComponentModel.ListSortDirection direction) Sorts all the tasks by specific property and order direction.

Use the following code to apply sorting in GanttView. Here, GanttView tasks are sorted in an ascending order on the basis of their names.

C#
コードのコピー
var propertyDescriptors = TypeDescriptor.GetProperties(typeof(Task));
gv.SortTasks(propertyDescriptors["Name"], ListSortDirection.Ascending);

Alternatively, you can apply sorting using the Sort button on the Toolbar. The Sort button opens the Sort menu which provides various options described in the following table:

ソートのオプション 説明
名前順 タスクをタスク名のアルファベット順に並べ替えできます。
開始日順 タスクを開始日で並べ替えできます。
終了日順 タスクを終了日で並べ替えできます。
期間順 各タスクに割り当てられた期間でタスクを並べ替えできます。
並べ替えの削除 既存の並べ替え条件を削除できます。
並べ替え... 複数列並べ替えを実行できます。
デフォルトでは、[並べ替え]ボタンのすべての並べ替えオプションは、データを昇順に表示します。ただし、[並べ替え]ダイアログを使用して、デフォルトの並べ替え順を「降順」に変更できます。詳細については、[並べ替え]ダイアログを参照してください。

Clear Sort

To clear sorting and return to the default view, you can use RemoveSort method of the C1GanttView class. The RemoveSort method clears all the sorting applied to the tasks as demonstrated in the following code.

C#
コードのコピー
    
gv.RemoveSort();

Custom Sort

GanttView provides various options for sorting the tasks in ascending or descending order as per your needs. However, there might be a scenario where you would want to apply your own custom sorting.

To implement custom sorting in the GanttView control, follow these steps. The following example sorts the tasks according to the increasing length of task names on a button click event.

  1. Create a class CustomComparer that implements the IComparer<Task> interface to sort the tasks by comparing the lengths of their names.
    C#
    コードのコピー
    public class CustomComparer : IComparer<Task>
        {
            public int Compare(Task x, Task y)
            {
                if (x.Name.Length > y.Name.Length)
                {
                    return 1;
                }
                else if (x.Name.Length < y.Name.Length)
                {
                    return -1;
                }
                else
                {
                    return 0;
                }
            }
        }   
    
  2. Subscribe to the button click event and add the following code to Sort_BtnClick event handler. Here, we create an instance of the CustomComparer class and pass it as a parameter to SortTasks method to specify the custom criteria for sorting the GanttView tasks.
    C#
    コードのコピー
        
    private void Sort_BtnClick(object sender, RoutedEventArgs routedEventArgs)
    {
        CustomComparer customComparer = new CustomComparer();
        gv.SortTasks(customComparer);
    }
    

Multi-Column Sort

GanttView では、ツールバーの[並べ替え]ボタンの下にあるオプションを使用して、複数列の並べ替えを実行できます。複数列の並べ替えを実行するために、GanttView には[並べ替え]ダイアログが用意されています。ここで、実行時に複数の列に並べ替え順を設定できます。

次の図は、GanttView で複数列の並べ替えを実装する方法を示しています。

multi-column sorting in ganttview