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:
Task.name
- alphabétiquement par son nomTask.start
- chronologiquement à la date de débutTâche.priority
- par priorité de tâche- Fields personnalisés - comme
text1
,numéro1
, etc.
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.