甘特图dhtmlxGantt使用教程:如何在Gantt中指定 格的列

在本教程中,我们将向您展示如何指定左侧 格的列,并为您简要概述dhtmlxGantt中的模板化和格式设置功能。

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

dhtmlxGantt试用版

在本教程中,我们将向您展示如何指定左侧 格的列,并为您简要概述dhtmlxGantt中的模板化和格式设置功能,您可以观看视频教程或阅读文章内容:

甘特图dhtmlxGantt使用教程:如何在Gantt中指定 格的列

甘特图中的 格列指定为“列”配置内的对象数组。

典型的配置如下所示:

gantt.config.columns = [    {name: "text", tree: true, width: '*', resize: true},    {name: "start_date", align: "center", resize: true},    {name: "duration", align: "center"},    {name: "add", width: 44}];

实际上,即使您未在应用中指定此设置,这也是默认情况下将具有的配置。

列具有很多可选属性。要知道的重要一点是,只有’name’属性是强制性的。其主要目的是定义单元格的内容。默认情况下,单元格将从任务的match属性中获取值:

document.addEventListener("DOMContentLoaded", function(event) {    gantt.config.columns = [        {name: "text", tree: true, width: '*', resize: true},        {name: "start_date", align: "center", resize: true},        {name: "duration", align: "center"},        {name: "add", width: 44}    ];  gantt.init("gantt_here");    gantt.parse({    data: [        {            id: 1, text: "Project #2", start_date: "01-04-2018", duration: 18, order: 10,            progress: 0.4, open: true        },        {            id: 2, text: "Task #1", start_date: "02-04-2018", duration: 8, order: 10,            progress: 0.6, parent: 1        },        {            id: 3, text: "Task #2", start_date: "11-04-2018", duration: 8, order: 20,            progress: 0.6, parent: 1        }    ],    links: [        {id: 1, source: 1, target: 2, type: "1"},        {id: 2, source: 2, target: 3, type: "0"}    ]  });});

正如您在上面的示例中看到的那样,名为“文本”的列显示了任务对象的“文本”属性中的值。开始日期和持续时间也是如此。

唯一的例外是名为“add”的列–这是一个预定义的值,显示“+” ,允许用户为该任务添加子项。

甘特图dhtmlxGantt使用教程:如何在Gantt中指定 格的列

基于此,您可以指定自己的列。例如,要在 格中定义四个自定义列,例如“任务名称”,“保持器”,“开始时间”和“进度”,我们应指定columns参数,其中“text”,“holder”,“start_date” ‘和’progress’是数据属性的名称。

gantt.config.columns =  [   {name:"text",       label:"Task name",  tree:true, width: 150 },   {name:"holder",     label:"Holder",     align:"center", width: 80 },   {name:"start_date", label:"Start time", align:"center", width: 80 },   {name:"progress",   label:"Progress",   align:"center", width: 80 },];

甘特图dhtmlxGantt使用教程:如何在Gantt中指定 格的列

但是,如果您想在将值显示在单元格中之前格式化值,该怎么办这种情况下,您将需要使用列的’template’属性。如果我们在其中使用模板,则上面的示例如下所示:

gantt.config.columns =  [    {name:"text",       label:"Task name",  tree:true, width:"*" },    {name:"start_date", label:"Start time", align: "center" },    {name:"staff",      label:"Holder(s)", template:function(obj){                                return obj.holder+"("+obj.progress")"} }];

甘特图dhtmlxGantt使用教程:如何在Gantt中指定 格的列

每次重绘该列时,都会调用该模板,并将返回值放入单元格的内部HTML中。这是甘特图中几乎所有模板的重要特征。每次更新后,模板元素的内容将完全替换。这意味着,如果直接从代码中修改此类DOM元素,则下次调用模板后,所有更改将丢失。

因此,如果您需要根据用户操作来更改单元格的类型,最好的方法不是直接更改样式,而是使用模板功能设置必要的样式和标记。

gantt.config.columns =  [    {name:"text",       label:"Task name",  tree:true, template(task){            if(gantt.getState().selected_task == task.id){                return "<b>" + task.text + "</b>";            }else{              return task.text;            };        } },    {name:"start_date", label:"Start time", align: "center" },    {name:"staff",      label:"Holder(s)", template:function(obj){            return obj.holder+"("+obj.progress+")"} }    ];

其次,请务必注意,模板处理原始HTML值,并且不清除以任何方式从它们返回的数据。这是一个有意识的设计决策,使您可以自由自定义大多数甘特元素。但这有一个严重的后果–这样的模板可以用作XSS攻击的入口点。让我们考虑下一个示例:

document.addEventListener("DOMContentLoaded", function(event) {    gantt.config.columns =  [    {name:"text",       label:"Task name",  tree:true, template(task){            if(gantt.getState().selected_task == task.id){                return "<b>" + task.text + "</b>";            }else{              return task.text;            };        } },    {name:"start_date", label:"Start time", align: "center" },    {name:"staff",      label:"Holder(s)", template:function(obj){            return obj.holder+"("+obj.progress+")"} }    ]; gantt.init("gantt_here");   gantt.parse({    data: [        {            id: 1, text: "<img onerror='javascript:alert("it can`t be good"")' src='' />""

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月19日
下一篇 2020年5月19日

相关推荐

发表回复

登录后才能评论