Ordenar tareas por columna en Gantt Chart

Descripción general

Al hacer gráficos Gantt, a menudo es útil mostrar tareas en un orden específico, por fecha de inicio, prioridad, duración o campos personalizados, en lugar de por su ID de tarea predeterminada. Aspose.Tasks para .NET le permite aplicar Lógica de clasificación personalizada Antes de reproducir el delegado SaveAptions.TasksComparer.

Esto permite clasificar las tareas de cualquier columna definida en la vista del gráfico Gantt, asegurando que la salida visual final se alinee con las necesidades de informes o presentación.

Aspose.Tasks para .NET proporciona la capacidad de ordenar tareas por cualquier columna en la vista del gráfico Gantt. Esto se logra con la ayuda de los métodos comparadores SaveOptions.TasksComparer antes de representar en Gantt Chart. El comparador predeterminado clasifica las tareas por ID de tarea si no se especifica otra opción.

Ordenación de tareas predeterminada vs personalizada

Por defecto, las tareas en un proyecto se representan en el orden de su task.id. Para anular este comportamiento, puede asignar una propiedad personalizada icomparer <arke> a la propiedad `tareas comparas ‘.

Ejemplos de campos que desee ordenar:

Ejemplo: ordene tareas por fecha de inicio

El siguiente ejemplo demuestra cómo clasificar las tareas por su propiedad ‘Start` antes de representar a una imagen.

 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.