提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:秦林|2022-10-09 13:38:53.827|阅读 150 次
概述:这篇文章给大家讲解如何利用dhtmlxGantt在服务器端集成数据。
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
相关链接:
这篇文章给大家讲解如何利用dhtmlxGantt在服务器端集成数据。
甘特图显示任务的顺序与它们来自数据源的顺序相同。如果您允许用户手动重新排序任务,您还需要将此订单存储在数据库中,并确保您的数据馈送返回正确排序的数据。
客户端配置:
// reordering tasks within the whole gantt
gantt.config.order_branch = true;
gantt.config.order_branch_free = true;
gantt.init("gantt_here");
gantt.load("/api");
var dp = gantt.createDataProcessor({
url: "/api",
mode: "REST"
});
保存顺序可以通过多种方式实现,我们将展示其中一种。
| HTTP方法 | URL | 参数 | 响应 |
| PUT | /apiUrl/task/taskId | 目标 = 相邻任务 ID | {“行动”:“更新”} |
参数将 target 包含在当前任务之前或之后的最近任务的 id。它的价值可能来自以下两种格式之一:
应用订单更改通常涉及更新多个任务,这里是一个伪代码示例,说明如何实现它:
const target = request["target"];
const currentTaskId = request["id"];
let nextTask;
let targetTaskId;
// get id of adjacent task and check whether updated task should go before or after it
if(target.startsWith("next:")){
targetTaskId = target.substr("next:".length);
nextTask = true;
}else{
targetTaskId = target;
nextTask = false;
}
const currentTask = tasks.getById(currentTaskId);
const targetTask = tasks.getById(targetTaskId);
if(!targetTaskId)
return;
// updated task will receive the sortorder value of the adjacent task
let targetOrder = targetTask.sortorder;
// if it should go after the adjacent task, it should receive a bigger sortorder
if(nextTask)
targetOrder++;
// increase sort orders of tasks that should go after the updated task
tasks.where(task => task.sortorder >= targetOrder).
update(task => task.sortorder++);
// and update the task with its new sortorder
currentTask.sortorder = targetOrder;
tasks.save(currentTask);
请求添加自定义标头
当您需要甘特图向后端发送额外的标头时,您可以使用dataProcessor.setTransactionMode方法指定它们。
例如,假设您需要在请求中添加授权令牌:
gantt.init("gantt_here");
gantt.load("/api");
var dp = gantt.createDataProcessor({
url: "/api",
mode:"REST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
}
});
目前,load不支持header/payload参数,因此如果您需要它们来进行GET请求,您必须手动发送xhr并使用parse将数据加载到甘特图中,例如:
gantt.ajax.get({
url: "/api",
headers: {
"Authorization": "Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
}
}).then(function (xhr) {
gantt.parse(xhr.responseText)
});
请求添加自定义参数
有几种方法可以向请求发送附加参数。
如您所知,甘特图将数据对象的所有属性发送回后端。因此,您可以直接向数据对象添加一个附加属性,并将其发送到后端:
gantt.attachEvent("onTaskCreated", function(task){
task.userId = currentUser;
return true;
});
或者,您可以使用参数的有效负载 属性setTransactionMode向数据处理器发送的所有请求添加自定义参数:
gantt.init("gantt_here");
gantt.load("/api");
var dp = gantt.createDataProcessor({
url: "/api",
mode:"REST",
payload: {
token: "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
}
});
将自定义参数添加到请求的另一种方法是使用DataProcessor的onBeforeUpdate事件:
var dp = gantt.createDataProcessor({
url: "/api",
mode:"REST"
});
dp.attachEvent("onBeforeUpdate", function(id, state, data){
data.projectId = "1";
return true;
});
要动态更改后端URL,请使用dataProcessor.url方法:
dp.url("/url");
dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理控件应用程序的所有需求,是最完善的甘特图图表库。了解更多DhtmlxGantt相关内容和资讯,欢迎在线咨询或者私信我获取正版试用版及报价。
甘特图控件交流群:764148812 欢迎进群交流讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn




本文将为大家介绍如何在MyEclipse中使用XDoclet开发EJB 2 Session Bean,欢迎下载最新版体验!
如果能将 CSV 自动转换为 PDF ,就能快速生成清晰、美观的报表,既节省手动排版时间,又能保持数据的专业呈现。本文将介绍如何使用 Spire.XLS for Java 实现这一过程——从加载 CSV 到输出高质量 PDF,仅需数行代码即可完成。
Parasoft C/C++test是一款专为C/C++代码设计的自动化测试工具,通过静态代码分析、单元测试和运行时错误检测等功能,帮助开发团队在早期发现并修复缺陷,提升代码质量和开发效率 。在实际使用中,尤其是在VC6此类旧版开发环境中执行单元测试时,可能会因环境兼容性问题触发链接错误。
本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@hmdbvip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
永利最大(官方)网站 