多任务选择

从 3.2 版本开始,库中新增了 multiselect 扩展,允许您同时选择多个任务。

启用多任务选择

要为任务启用多任务选择,请通过 gantt.plugins 方法激活该功能:

<!DOCTYPE html>
<html>
<head>
   <script src="codebase/dhtmlxgantt.js"></script>   
   <link href="codebase/dhtmlxgantt.css" rel="stylesheet">   
</head>
<body>
    gantt.plugins({         multiselect: true     });     //your code will be here
</body>
</html>

Related sample:  Multiselection and Indent/Outdent tasks

启用后,多任务选择会自动生效。


如需关闭此扩展,请使用 multiselect 选项:

Disabling multi-task selection

gantt.config.multiselect = false;

一次性批量更新多个任务

要同时修改多个任务或链接,请使用 batchUpdate 方法:

gantt.batchUpdate(function () {
    var tasks = gantt.getTaskByTime();
    for(var i = 0; i < tasks.length; i++){
        var task = tasks[i];
        task.start_date = gantt.date.add(task.start_date, 1, "day");
        task.end_date = gantt.calculateEndDate(task.start_date, task.duration);
        gantt.updateTask(task.id);
    }
});

该方法允许您一次性批量更新多个任务或链接,只进行一次重渲染,避免多次更新导致的多次重绘。

Related sample:  Multiselection and Indent/Outdent tasks

遍历器

要遍历甘特图中所有被选中的任务,请使用 eachSelectedTask 方法:

gantt.batchUpdate(function () {
    gantt.eachSelectedTask(function(task_id){
        if(gantt.isTaskExists(task_id))
            gantt.deleteTask(task_id);
    });
});

Related sample:  Multiselection and Indent/Outdent tasks

同时缩进/取消缩进

通过多任务选择,您可以一次性对多个任务执行操作。例如,您可以对任务进行缩进或取消缩进,将其变为子任务或将子任务提升为主任务。

Related sample:  Multiselection and Indent/Outdent tasks

检查任务是否被选中

要判断某个任务当前是否被选中,请使用 isSelectedTask 方法:

gantt.templates.task_class = 
gantt.templates.grid_row_class = 
gantt.templates.task_row_class = function (start, end, task) {
    if (gantt.isSelectedTask(task.id))
        return "gantt_selected";
};

Related sample:  Multiselection and Indent/Outdent tasks

要切换任务的选中/未选中状态,请使用 toggleTaskSelection 方法:

gantt.toggleTaskSelection("t_1"); //"t_1" 是任务的 id
gantt.render();

获取所有被选中的任务

要获取当前所有被选中的任务,请使用 getSelectedTasks 方法:

gantt.getSelectedTasks();

要获取最近被选中的任务,请使用 getLastSelectedTask 方法:

gantt.getLastSelectedTask();

限制同一层级的多任务选择

如果您希望只允许选择同一层级的任务,请使用 multiselect_one_level 选项:

gantt.config.multiselect_one_level = true; 
gantt.init('gantt_here');

多任务选择与拖拽

启用 multiselect.js 扩展后,按住 Ctrl 或 Shift 键可以选择多个任务,并可将它们一起水平拖动。

如需禁用该功能,请将 drag_multiple 选项设为 false

gantt.config.drag_multiple = true;

Related sample:  Multiselection and Indent/Outdent tasks

单击打开编辑器

在单选模式下,点击任务会立即打开内联编辑器。

多选模式 下,点击未选中的任务会先选中该任务,只有第二次点击才会打开内联编辑器。
如果希望即使在多选模式下,第一次点击就能打开编辑器,请启用 inline_editors_multiselect_open 配置项。

gantt.plugins({
  multiselect: true
});
 
...
 
gantt.config.inline_editors_multiselect_open = true;

API 事件

启用多任务选择后,选择一个或多个任务会同时触发通用的 onTaskSelected / onTaskUnselected 事件,以及 multiselect 扩展专用事件。

多任务选择将触发以下事件流程:

Back to top