ガントチャートの列ごとにタスクを並べ替えます
概要
ガントチャートをレンダリングする場合、デフォルトのタスクIDではなく、開始日、優先度、期間、またはカスタムフィールドまでに特定の順序でタスクを表示することがしばしば役立ちます。 .NETのasopes.tasksを使用すると、saveoptions.taskscomparer
Delegateを使用してレンダリングする前にカスタムソートロジック**を適用できます。
これにより、ガントチャートビューで定義された任意の列による並べ替えタスクが可能になり、最終的な視覚出力がレポートまたはプレゼンテーションのニーズと一致するようにします。
.NETのAspose.Tasksは、Ganttチャートビューの任意の列でタスクを並べ替える機能を提供します。これは、ガントチャートでレンダリングする前に、比較方法SaveOptions.taskscomparerの助けを借りて達成されます。デフォルトの比較は、他のオプションが指定されていない場合、タスクIDでタスクをソートします。
デフォルトとカスタムタスクソート
デフォルトでは、プロジェクトのタスクは「task.id」の順にレンダリングされます。この動作をオーバーライドするには、カスタム「icomparer
次のように並べ替えたいフィールドの例
task.name
- アルファベット順に名前task.start
- 開始日までに年代順に- 「task.priority」 - タスクの優先順位によって
- カスタムフィールド -
text1
、number1
など。
例:開始日までにタスクを並べ替えます
次の例は、画像にレンダリングする前に、「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.