提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:莫成敏|2020-06-08 14:39:02.907|阅读 2090 次
概述:在本文中,我们用视频和文章两种方式介绍了如何将各种按钮,图标和下拉菜单添加到JavaScript甘特图的网格单元格和标题中。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。它允许你创建动态甘特图,并以一个方便的图形化方式可视化项目进度。有了dhtmlxGantt,你可以显示活动之间的依赖关系,显示具有完成百分比阴影的当前任务状态以及组织活动到树结构。
在这里,我们提供了一个dhtmlxGantt视频教程,专门介绍dhtmlxGantt中的网格配置。在此视频中,我们将讨论如何将各种按钮,图标和下拉菜单添加到JavaScript甘特图的网格单元格和标题中:
假设我们需要创建一个带有自定义按钮的列来执行用户操作:
例如,我们可以使用以下模板和“Font Awesome”图标添加按钮:
gantt.config.columns = [ {name: "text", tree: true, width: '*', resize: true}, {name: "start_date", align: "center", resize: true}, {name: "duration", align: "center"}, {name: "buttons",label: colHeader,width: 75,template: function (task) { return ( '<i class="fa fa-pencil" data-action="edit"></i>' + '<i class="fa fa-plus" data-action="add"></i>' + '<i class="fa fa-times" data-action="delete"></i>' ); }} ];
由于按钮将与行的其余部分一起重新绘制,因此我们不能仅使用'addEventListener'或jquery click handler之类的东西向每个按钮添加事件侦听器。取而代之的是,我们可以使用内联onclick属性添加处理程序,也可以使用称为事件委托的方法-向不受重绘影响的父元素添加单个事件侦听器,并在其中捕获单击。幸运的是,Gantt提供了一个公共单击事件,该事件将在用户每次单击与任务相关的元素时触发。
我们可以在那里捕获用户点击:
gantt.attachEvent("onTaskClick", function(id, e){ var button = e.target.closest("[data-action]") if(button){ var action = button.getAttribute("data-action"); switch (action) { case "edit": gantt.showLightbox(id); break; case "add": gantt.createTask(null, id); break; case "delete": gantt.confirm({ title: gantt.locale.labels.confirm_deleting_title, text: gantt.locale.labels.confirm_deleting, callback: function (res) { if (res) gantt.deleteTask(id); } }); break; } return false; } return true; });
在处理程序中,我们检查单击的元素是否是我们的按钮之一,如果是,则确定应执行的操作,然后执行。
至于列标题,我们可以将其HTML放入列的label属性中,并在其中添加内联onclick处理程序:
var colHeader = '<div class="gantt_grid_head_cell gantt_grid_head_add" onclick="gantt.createTask()"></div>'; gantt.config.columns = [ {name: "text", tree: true, width: '*', resize: true}, {name: "start_date", align: "center", resize: true}, {name: "duration", align: "center"}, {name: "buttons",label: colHeader,width: 75,template: function (task) { return ( '<i class="fa fa-pencil" data-action="edit"></i>' + '<i class="fa fa-plus" data-action="add"></i>' + '<i class="fa fa-times" data-action="delete"></i>' ); }} ];
可以将相同的方法用于更复杂的控件,例如将下拉菜单添加到网格标题中:
您可能已经猜到了,我们还将在列标签中添加所需的HTML。在这种情况下,我们将有一个内联onclick参数,它将打开一个下拉菜单。请注意,该处理程序必须在全局范围内可用,因此我们在gantt对象中对其进行定义:
gantt.$showDropdown = function(node){ var position = node.getBoundingClientRect(); var dropDown = getDropdownNode(); dropDown.style.top = position.bottom + "px"; dropDown.style.left = position.left + "px"; dropDown.style.display = "block"; dropDown.keep = true; setTimeout(function(){ dropDown.keep = false; }) } gantt.$hideDropdown = function(){ var dropDown = getDropdownNode(); dropDown.style.display = "none"; } window.addEventListener("click", function(event){ if(!event.target.closest("#gantt_dropdown") && !getDropdownNode().keep){ gantt.$hideDropdown(); } }) var colHeader = '<div class="gantt_grid_head_cell gantt_grid_head_add" onclick="gantt.createTask()"></div><div class="gantt-dropdown" onclick="gantt.$showDropdown(this)">▼</div>'; gantt.config.columns = [ {name: "text", tree: true, width: '*', resize: true}, {name: "start_date", align: "center", resize: true}, {name: "duration", align: "center"}, {name: "buttons",label: colHeader,width: 75,template: function (task) { return ( '<i class="fa fa-pencil" data-action="edit"></i>' + '<i class="fa fa-plus" data-action="add"></i>' + '<i class="fa fa-times" data-action="delete"></i>' ); }}
这样,您可以借助HTML轻松地将自定义元素(例如按钮或输入)添加到网格列中。
为了自己尝试所有这些,请获取我们的JavaScript Gantt的免费试用版,并按照我们的视频教程中的步骤进行操作!我们将期待您的反馈,以及您希望在视频中看到的其他想法。
dhtmlxGantt可以集成到慧都APS生产计划排程系统中,实现计划修改、滚动排程、临时插单等高级智能功能,帮助企业实现数字化或智能工厂的转型。
相关产品推荐:
VARCHART XGantt:支持ActiveX、.Net等平台的C#甘特图控件
AnyGantt:构建复杂且内容丰富的甘特图的理想工具
jQuery Gantt Package:基于HTML5 / jQuery的跨平台jQuery Gantt包
phGantt Time Package:对任务和时间的分配管理的甘特图
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢