1、创建自定义灯箱的方法
您可以为甘特图创建一个完全自定义的灯箱,并用它替换默认灯箱。有两种可能的方法:
(1)通过重新定义showLightbox方法:
在页面中包含jQuery库的源文件:
gantt.showLightbox = function(id){ // code of the custom form}
创建一个 HTML 容器“my-form”,我们将在其中放置一个自定义灯箱:
<div id="my-form"> <label for="description">Task text <input type="text" name="description" value="" > </label> <br> <input type="button" name="save" value="Save"> <input type="button" name="close" value="Close"> <input type="button" name="delete" value="Delete"></div>
然后制作一个自定义的灯箱,你可以使用类似这样的配置:
var taskId = null;gantt.showLightbox = function(id) { taskId = id; var task = gantt.getTask(id); var form = getForm(); var input = form.querySelector("[name='description']"); input.focus(); input.value = task.text; form.style.display = "block"; form.querySelector("[name='save']").onclick = save; form.querySelector("[name='close']").onclick = cancel; form.querySelector("[name='delete']").onclick = remove;};gantt.hideLightbox = function(){ getForm().style.display = ""; taskId = null;}function getForm() { return document.getElementById("my-form");};function save() { var task = gantt.getTask(taskId); task.text = getForm().querySelector("[name='description']").value; if(task.$new){ delete task.$new; gantt.addTask(task,task.parent); }else{ gantt.updateTask(task.id); } gantt.hideLightbox();}function cancel() { var task = gantt.getTask(taskId); if(task.$new) gantt.deleteTask(task.id); gantt.hideLightbox();}function remove() { gantt.deleteTask(taskId); gantt.hideLightbox();}
(2)使用onBeforeLightbox事件。在这种情况下,动作算法如下:
- 检测何时显示灯箱
- 阻止默认灯箱
- 显示自定义表单并填写任务数据
gantt.attachEvent("onBeforeLightbox", function(id) { var task = gantt.getTask(id); if(task.$new){ dhtmlx.confirm({ text:"Create task, callback: function(res){ if(res){ //..apply values delete task.$new; gantt.addTask(task); }else{ gantt.deleteTask(task.id); } } }); return false; } return true;});
2、自定义表单中的处理操作
当用户保存表单时,您需要手动获取表单值并使用公共 API 更新适当的任务:addTask、updateTask和deleteTask。
请注意,当灯箱被新任务触发时(单击“加 ”按钮),如果用户单击“取消”以恢复任务创建,则应将其删除,任务对象将设置“$new”属性。
您可以处理灯箱关闭,如下例所示。动作类型——“保存”、“取消”或“删除”作为“动作”参数传递:
switch(action){ case "save": task.text = '';// apply values from form // add new task or update already existing one if(task.$new){ delete task.$new; gantt.addTask(task,task.parent) }else{ gantt.updateTask(id); } break; case "cancel": // if cancel popup for creating a new task - delete it, otherwise do nothing if(task.$new) gantt.deleteTask(id); break; case "delete": gantt.deleteTask(id); break;}
DHTMLX Gantt享有超十年声誉,支持跨浏览器和跨平台,性价比高,可满足项目管理控件应用的所有需求,是最完善的甘特图图表库。
2022年终狂欢火热进行中,全场产品超低价,DHTMLX全系产品享8.8折!了解更多活动详情,欢迎访问 咨询在线客服。
甘特图控件交流群:764148812 欢迎进群交流讨论
年终狂欢季,全场产品,限时特惠,立即了解详情!
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!