本库包含 outerdrag 扩展,使您可以通过从外部 DHTMLX 组件或其他调度器拖动元素来创建新事件。
当从外部来源拖动元素到调度器时,调度器会自动打开 lightbox 以创建新事件。
Related sample: Integration with dhtmlxTree
以下是 dhtmlxTree 组件与外部拖放的工作方式。
要将调度器与 dhtmlxTree 集成,请按照以下步骤操作:
<script src="../codebase/dhtmlxscheduler.js" ...></script>
<link rel="stylesheet" href="../codebase/dhtmlxscheduler.css" ...>
...
scheduler.plugins({
outerdrag: true
});
var tree = new dhtmlXTreeObject("treebox", "100%", "100%", 0);
tree.setImagePath("../common/dhtmlxTree/imgs/csh_yellowbooks/");
tree.loadXML("./data/tree.xml");
tree.enableDragAndDrop(true);
...
scheduler.init('scheduler_here', new Date(2019, 5, 30), "timeline");
scheduler.attachEvent("onExternalDragIn", function(id, source, event){
var label = tree.getItemText(tree._dragged[0].id);
scheduler.getEvent(id).text = label;
return true;
});
Related sample: Integration with dhtmlxTree
完成上述设置后,您只需拖拽所需节点即可轻松通过树的数据创建新事件。
此功能仅适用于 Commercial(自 2021 年 10 月 6 日起)、Enterprise 和 Ultimate 许可证版本。
当在页面上显示多个调度器时,可以启用它们之间的拖放,实现事件在不同调度器之间的无缝移动。
要启用调度器间的拖放支持,请引入 "drag_between" 扩展:
Enabling drag-and-drop support for several schedulers
<script src="codebase/dhtmlxscheduler.js"></script>
<link rel="stylesheet" href="codebase/dhtmlxscheduler.css" type="text/css">
<script>scheduler.plugins({
drag_between: true
});
scheduler.init('scheduler_here',new Date(2019, 5, 30),"week");
scheduler.load("./data/units.xml");
scheduler2 = Scheduler.getSchedulerInstance();
scheduler2.init('scheduler_here_2',new Date(2019, 5, 30),"week");
</script>
您可以在 Scheduler PRO package 中的 "samples/20_multiple/06_drag_between_layout.html" 示例中找到相关代码。
如需禁止事件从某个调度器中拖出,请将 drag_out 属性设置为 false:
scheduler.config.drag_out = false; // 禁止事件从该调度器拖出 scheduler.init('scheduler_here',new Date(2019, 5,30),"week");
scheduler.load("./data/units.xml");
scheduler2 = Scheduler.getSchedulerInstance();
scheduler2.init('scheduler_here_2',new Date(2019, 5, 30),"week");
如需禁止事件被拖入某个调度器,请将 drag_in 属性设置为 false:
scheduler.init('scheduler_here',new Date(2019, 5, 30),"week");
scheduler.load("./data/units.xml");
scheduler2.config.drag_in = false; // 禁止事件被拖入该调度器 scheduler2 = Scheduler.getSchedulerInstance();
scheduler2.init('scheduler_here_2',new Date(2019, 5, 30),"week");
"samples/20_multiple/06_drag_between_layout.html" 示例可在 Scheduler PRO package 中获取。