dataprocessor

一组 dataprocessor 方法

object 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) - 是否一次发送所有数据,还是每条记录单独发送
    dp.setTransactionMode("POST", true);

    如果您想发送自定义 HTTP 头或额外数据,可以传入一个对象作为第一个参数,包含以下属性:

    • mode - (string) - 数据发送模式,如 "GET"、"POST"、"REST"、"JSON" 或 "REST-JSON"
    • headers - (object) - 请求中包含的头部键值对
    • payload - (object) - 与头部一起发送的额外键值对
    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}`);
        }
    });

    可能的响应状态包括:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • onBeforeDataSending (id, state, data): void - 在数据发送到服务器之前触发
    • id - (string | number) - 项的 ID
    • state - (string) - 当前状态(操作类型)
    • data - (object) - 将要发送的序列化数据
    dp.attachEvent("onBeforeDataSending", (id, state, data) => {
        // 发送数据前的自定义逻辑
        return true;
    });

    此事件在每次数据更新请求时触发(在 onBeforeUpdate 之后)。

    如果处理函数返回 false,数据将不会被发送到服务器。

    可能的响应状态:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • onBeforeUpdate (id, state, data): void - 在记录(或多条记录)更新前触发
    • id - (string | number) - 项的 ID
    • state - (string) - 项的状态(操作类型)
    • data - (object) - 将发送到服务器的数据
    dp.attachEvent("onBeforeUpdate", (id, state, data) => {
        // 更新前的自定义逻辑
        return true;
    });

    此事件在每条记录更新时触发,并且在 onBeforeDataSending 之前。

    返回 false 将阻止数据发送。

    可能的响应状态:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • 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 将阻止该项被标记。

See also
Back to top