ガントチャートの列ごとにタスクを並べ替えます

概要

ガントチャートをレンダリングする場合、デフォルトのタスクIDではなく、開始日、優先度、期間、またはカスタムフィールドまでに特定の順序でタスクを表示することがしばしば役立ちます。 .NETのasopes.tasksを使用すると、saveoptions.taskscomparer Delegateを使用してレンダリングする前にカスタムソートロジック**を適用できます。

これにより、ガントチャートビューで定義された任意の列による並べ替えタスクが可能になり、最終的な視覚出力がレポートまたはプレゼンテーションのニーズと一致するようにします。

.NETのAspose.Tasksは、Ganttチャートビューの任意の列でタスクを並べ替える機能を提供します。これは、ガントチャートでレンダリングする前に、比較方法SaveOptions.taskscomparerの助けを借りて達成されます。デフォルトの比較は、他のオプションが指定されていない場合、タスクIDでタスクをソートします。

デフォルトとカスタムタスクソート

デフォルトでは、プロジェクトのタスクは「task.id」の順にレンダリングされます。この動作をオーバーライドするには、カスタム「icomparer 」を「taskscomparer」プロパティに割り当てることができます。

次のように並べ替えたいフィールドの例

例:開始日までにタスクを並べ替えます

次の例は、画像にレンダリングする前に、「Start」プロパティでタスクを並べ替える方法を示しています。

 1class SortTasksByColumnInGanttChart
 2{
 3    public static void Run()
 4    {
 5        Project project = new Project("New Project.mpp");
 6        SaveOptions options = new PdfSaveOptions();
 7        options.Timescale = Timescale.Months;
 8
 9        options.TasksComparer = new TasksNameComparer();
10        project.Save("SortedByNames_out.pdf", options);
11
12        options.TasksComparer = new TasksDurationComparer();
13        project.Save("SortedByDurations_out.pdf", options);
14    }
15
16    public class TasksNameComparer : IComparer<Task>
17    {
18        public int Compare(Task x, Task y)
19        {
20            return x.Get(Tsk.Name).CompareTo(y.Get(Tsk.Name));
21        }
22    }
23
24    public class TasksDurationComparer : IComparer<Task>
25    {
26        public int Compare(Task x, Task y)
27        {
28            Duration durX = x.Get(Tsk.Duration);
29            Duration durY = y.Get(Tsk.Duration);
30            return durX.TimeSpan.CompareTo(durY.TimeSpan);
31        }
32    }
33}

Custom Comparer Implementation

Below is a simple custom comparer you can plug into SaveOptions.TasksComparer:

1class SortByStartDate : IComparer<Task>
2{
3    public int Compare(Task x, Task y)
4    {
5        return DateTime.Compare(x.Get(Tsk.Start), y.Get(Tsk.Start));
6    }
7}

Assign the comparer:

1var options = new ImageSaveOptions(SaveFileFormat.Png)
2{
3    TasksComparer = new SortByStartDate()
4};
5project.Save("sorted-output.png", options);

Summary

Using TasksComparer, you can fully control how tasks are ordered in the rendered Gantt chart, providing flexibility for reporting, printing, or visual analysis.