跳到主要内容

dataprocessor

Description

一组 dataprocessor 方法

Details

可以使用 createDataProcessor 方法创建一个新的 DataProcessor 实例。或者,使用 dataProcessor 构造函数也提供了一种创建 DataProcessor 实例的旧式方式。 dataprocessor 对象具备以下 methodsevents

Methods

Methods

  • 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 - 取消附加到事件的处理程序(该事件之前通过 attachEvent() 方法附加)

    • id - (string) - 事件的唯一标识符
    const dp = gantt.createDataProcessor({
    url: "/api",
    mode: "REST",
    });

    const handlerId = dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
    console.log("Updated task:", id);
    });

    // detach a listener
    dp.detachEvent(handlerId);
  • getState (id): string - 返回项的状态(已更新或未更新)

    • id - (string | number) - 项的 ID
    const status = dp.getState(id);
  • ignore (code): void - 在不触发 DataProcessor 的情况下执行一段代码

    • code - (Function) - 数据修改代码
    dp.ignore(() => {
    // won't be saved
    gantt.addTask({
    id: 10,
    text: "Task #5",
    start_date: "03-02-2025",
    duration: 5
    });
    });

    当你不想把这些改动保存到服务器端时,可以在这里放置数据添加和删除操作。

    The dp.ignore() method works similarly to 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) - 一组头信息,呈现为 "key":"value" 对,应随请求一起发送
    • payload - (object) - 额外数据,以 "key":"value" 对的形式设置,应该与 headers 一起发送到服务器
    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");
  • getSyncState (): boolean - 返回 DataProcessor 的状态(当所有数据都已保存时为 true

    const state = dp.getSyncState();

    如果某些记录尚未保存,或收到一个 "error" 响应,该方法将返回 false

  • sendData ([id]): void - 发送尚未保存到服务器端的所有数据

    • id - (string | number) - 可选,项的 ID
    dp.sendData();

    如果提供了 ID,则仅会将一个项发送到服务器端。

    未带参数调用时,该方法将发送所有尚未保存的项。

Events

  • 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(`Server error: ${response.message}`);
    }
    });

    Possible response statuses:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • onBeforeDataSending (id, state, data): void - 在将数据发送到服务器之前触发

    • id - (string | number) - 项的 ID
    • state - (string) - 项的状态(操作类型)
    • data - (object) - 将要发送到服务器的序列化数据
    dp.attachEvent("onBeforeDataSending", (id, state, data) => {
    // Custom logic before sending data
    return true;
    });

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

    从事件处理程序返回 false 将阻止数据发送到服务器。

    Possible response statuses:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • onBeforeUpdate (id, state, data): void - 在更新记录(或多条记录)之前触发

    • id - (string | number) - 项的 ID
    • state - (string) - 项的状态(操作类型)
    • data - (object) - 将要发送到服务器的数据
    dp.attachEvent("onBeforeUpdate", (id, state, data) => {
    // Custom logic before updating
    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 将阻止对该项进行标记。

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.