Trier les tâches par colonne dans le graphique de Gantt

Aperçu

Lorsque vous rendez les graphiques Gantt, il est souvent utile d’afficher des tâches dans un ordre spécifique - par date de début, priorité, durée ou champs personnalisés - plutôt que par leur identifiant de tâche par défaut. Aspose.tasks pour .NET vous permet d’appliquer la logique de tri personnalisée avant le rendu à l’aide du délégué `SaveOptions.tasksComparer ‘.

Cela permet de tri les tâches par toute colonne définie dans la vue du graphique Gantt, garantissant que la sortie visuelle finale s’aligne sur les besoins de rapport ou de présentation.

Aspose.tasks pour .NET offre la possibilité de trier les tâches par n’importe quelle colonne de la vue Gantt Chart. Ceci est accompli à l’aide de la méthode de comparaison SaveOptions.taskscomparer avant de rendre dans le graphique Gantt. Le comparateur par défaut trie les tâches par ID de tâche si aucune autre option n’est spécifiée.

Tri des tâches par défaut vs personnalisé

Par défaut, les tâches d’un projet sont rendues dans l’ordre de leur `` tâche.id. Pour remplacer ce comportement, vous pouvez affecter une iCOMPARER ICOMPARE ‘personnalisée à la propriété` TasksComparer’.

Exemples de champs que vous voudrez peut-être trier:

Exemple: trier les tâches par date de début

L’exemple suivant montre comment trier les tâches par leur propriété «Démarrer» avant de se rendre à une image.

 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.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.