dataprocessor
Description
一组 dataprocessor 方法
Details
您可以通过 createDataProcessor 方法创建一个新的 DataProcessor 实例。也可以通过较旧的方式,使用 dataProcessor 构造函数来创建实例。
dataprocessor 对象包含以下方法和事件:
方法
attachEvent (name, handler, settings): string - 向 DataProcessor API 事件添加一个处理函数
- name - (string) - 事件名称,大小写不敏感
- handler - (Function) - 事件处理函数
- settings? - (object) - 可选,事件处理函数的设置对象
const dp = gantt.createDataProcessor({
url: "/api",
mode: "REST",
});
dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
console.log("Updated task:", id);
});
detachEvent (id): void - 根据事件处理函数的 ID 移除之前绑定的事件处理函数
- id - (string) - 事件处理函数的 ID
const dp = gantt.createDataProcessor({
url: "/api",
mode: "REST",
});
const handlerId = dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
console.log("Updated task:", id);
});
// 移除事件监听
dp.detachEvent(handlerId);
getState (id): string - 获取指定项的状态(是否已更新)
- id - (string | number) - 项的 ID
const status = dp.getState(id);
ignore (code): void - 在不触发 DataProcessor 操作的情况下执行一段代码
- code - (Function) - 数据修改函数
dp.ignore(() => {
// 这里的更改不会被保存
gantt.addTask({
id: 10,
text: "Task #5",
start_date: "03-02-2025",
duration: 5
});
});
这对于在避免保存更改到服务器时添加或删除数据非常有用。
dp.ignore() 方法的行为类似于 gantt.silent()。setTransactionMode (mode, total): void - 设置数据发送到服务器的方式
- mode - (string) - 发送方式,选项包括 "GET"、"POST"、"REST"、"JSON" 或 "REST-JSON"
- total - (boolean) - 是否一次发送所有数据,还是每条记录单独发送
- mode - (string) - 数据发送模式,如 "GET"、"POST"、"REST"、"JSON" 或 "REST-JSON"
- headers - (object) - 请求中包含的头部键值对
- payload - (object) - 与头部一起发送的额外键值对
dp.setTransactionMode("POST", true);
如果您想发送自定义 HTTP 头或额外数据,可以传入一个对象作为第一个参数,包含以下属性:
dp.setTransactionMode({
mode: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Accept-Language": "fr-FR"
},
payload: {
"user_id": "12"
}
}, true);
setUpdated (rowId, [mode, state]): void - 标记某项为已更新或未更新
- rowId - (string | number) - 项的 ID
- mode? - (boolean) - 可选,
true(默认)标记为已更新,false标记为未更新 - state? - (string) - 可选,更新状态名称,默认是
"updated"
dp.setUpdated(1);
dp.setUpdated(2, true, "deleted");
事件
onAfterUpdate (id, action, tid, response): void - 在服务器响应接收并处理后触发
- id - (string | number) - 被更新项的 ID
- action - (string) - 响应状态(操作类型)
- tid - (string) - 新 ID(仅插入操作时有效)
- response - (mixed) - 解析后的响应,可能是 XML 节点或 JSON 对象
dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
if (action === "error") {
alert(`服务器错误: ${response.message}`);
}
});
updatedinserteddeletedinvaliderror
可能的响应状态包括:
onBeforeDataSending (id, state, data): void - 在数据发送到服务器之前触发
- id - (string | number) - 项的 ID
- state - (string) - 当前状态(操作类型)
- data - (object) - 将要发送的序列化数据
dp.attachEvent("onBeforeDataSending", (id, state, data) => {
// 发送数据前的自定义逻辑
return true;
});
updatedinserteddeletedinvaliderror
此事件在每次数据更新请求时触发(在 onBeforeUpdate 之后)。
如果处理函数返回 false,数据将不会被发送到服务器。
可能的响应状态:
onBeforeUpdate (id, state, data): void - 在记录(或多条记录)更新前触发
- id - (string | number) - 项的 ID
- state - (string) - 项的状态(操作类型)
- data - (object) - 将发送到服务器的数据
dp.attachEvent("onBeforeUpdate", (id, state, data) => {
// 更新前的自定义逻辑
return true;
});
updatedinserteddeletedinvaliderror
此事件在每条记录更新时触发,并且在 onBeforeDataSending 之前。
返回 false 将阻止数据发送。
可能的响应状态:
onRowMark (id, state, mode, invalid): void - 在标记已更新项之前触发
- id - (string | number) - 与错误相关的项的 ID
- state - (string) - 项的状态(操作类型)
- mode - (boolean) -
true表示添加标记,false表示移除标记 - invalid - (object) - 错误详细信息(如果有)
dp.attachEvent("onRowMark", (id, state, mode, invalid) => {
// 标记项之前的自定义逻辑
return true;
});
此事件可以被阻止。返回 false 将阻止该项被标记。