温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

dhtmlxGantt怎么重新排序任务

发布时间:2022-12-02 17:37:19 来源:亿速云 阅读:195 作者:iii 栏目:编程语言

本文小编为大家详细介绍“dhtmlxGantt怎么重新排序任务”,内容详细,步骤清晰,细节处理妥当,希望这篇“dhtmlxGantt怎么重新排序任务”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。它允许你创建动态甘特图,并以一个方便的图形化方式可视化项目进度。有了dhtmlxGantt,你可以显示活动之间的依赖关系,显示具有完成百分比阴影的当前任务状态以及组织活动到树结构。

重新排序任务

dhtmlxGantt提供了两种在网格中对任务进行重新排序的方法:

  1. 拖放

  2. 排序

这些方法是替代的。默认情况下,两种模式都是禁用的。
要启用拖放重排序,请使用order_branch选项:

gantt.config.order_branch = true;
gantt.init("gantt_here");

在整个甘特结构中拖放

该order_branch选项允许同一树级别中拖动任务。

也可以启用可以在整个甘特图中重新排序任务的模式。这意味着一个任务可以替换任何树级别的另一个任务。要使用这种类型的任务重新排序,请使用order_branch_free选项:

// reordering tasks within the whole gantt
gantt.config.order_branch = true;
gantt.config.order_branch_free = true;
 
gantt.init("gantt_here");

拒绝掉到特定位置

要拒绝将任务放到特定位置,请使用onBeforeTaskMove或onBeforeRowDragEnd事件:

//prevent moving to another sub-branch:
gantt.attachEvent("onBeforeTaskMove", function(id, parent, tindex){
    var task = gantt.getTask(id);
    if(task.parent != parent)
        return false;
    return true;
});
 
//or
gantt.attachEvent("onBeforeRowDragEnd", function(id, parent, tindex){
    var task = gantt.getTask(id);
    if(task.parent != parent)
        return false;
    return true;
});

改善大型数据集的性能

如果您的甘特图中包含很多任务,则分支重排序的默认模式可能会降低性能。为了加快速度,您可以使用“标记”模式。

gantt.config.order_branch = "marker";

在此模式下,仅将任务名称重新排序(按住鼠标左键),并且仅当将任务放在目标位置时(释放键)才重新渲染甘特图。与默认模式不同,更改任务位置不涉及触发onBeforeTaskMove / onAfterTaskMove事件。
为防止任务掉落到特定位置,请改用onBeforeRowDragMove事件(仅在“标记”模式下有效)。

拖放时突出显示可用放置位置

要在拖动过程中突出显示可用的目标位置(例如,不可能将根节点拖动到另一个根目录下,并且您想在视觉上通知用户此信息),请使用onRowDragStart和onRowDragEnd事件:

gantt.config.order_branch = true;// order tasks only inside a branch
gantt.init("gantt_here");
gantt.parse(demo_tasks);
 
var drag_id = null;
gantt.attachEvent("onRowDragStart", function(id, target, e) {
    drag_id = id;
    return true;
});
gantt.attachEvent("onRowDragEnd", function(id, target) {
    drag_id = null;
    gantt.render();
});
 
gantt.templates.grid_row_class = function(start, end, task){
    if(drag_id && task.id != drag_id){
        if(task.$level != gantt.getTask(drag_id).$level)
            return "cant-drop";
        }
    return "";
};

读到这里,这篇“dhtmlxGantt怎么重新排序任务”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI