Skip to content

Rows

appendRow

添加行数据

window.dtableSDK.appendRow(table, rowData, view, { collaborators } = {});

其中

  • table: 子表对象
  • rowData: 行数据
  • view: 视图对象, 可以为 null
  • { collaborators } : 包含协作人列表的的对象参数

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const collaborators = window.dtableSDK.getRelatedUsers();
const rowData = {
  '名称': '小强',
  '年龄': 28,
  '工作': '程序员'
};
window.dtableSDK.appendRow(table, rowData, view, { collaborators });

deleteRowById

通过 id 删除子表的行数据

window.dtableSDK.deleteRowById(table, rowId);

其中

  • table: 子表对象
  • rowId: 删除行的 id 值

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const rows = window.dtableSDK.getViewRows(view, table);
const rowId = rows[0]._id;

window.dtableSDK.deleteRowById(table, rowId);

deleteRowsByIds

通过 id 列表删除子表的多行数据

window.dtableSDK.deleteRowsByIds(table, rowIds);

其中

  • table: 子表对象
  • rowIds: 删除多行数据的 id 列表

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const rows = window.dtableSDK.getViewRows(view, table);
const rowIds = rows.map(row => row._id);

// 删除前五行数据
window.dtableSDK.deleteRowsByIds(table, rowIds.slice(0, 5));

modifyRow

更改行内容

window.dtableSDK.modifyRow(table, row, updated);

其中

  • table: 子表对象
  • row: 行对象
  • updated: 新的行参数对象

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const rows = window.dtableSDK.getViewRows(view, table);
const rowId = rows[0];
const updated = {
  '年龄': 30,
  '工作': '销售'
};
window.dtableSDK.modifyRow(table, row, updated);

forEachRow

遍历行数据, 依据某些条件完成相应业务逻辑

window.dtableSDK.forEachRow(tableName, viewName, callback, { username, userId } = {});

其中

  • tableName: 子表名字
  • viewName: 视图名字
  • callback: 回调函数, 处理自定义业务逻辑
  • { username, userId }: 包含用户名字, 用户 id 的对象参数

注: username, userId: 在开发环境中可以从本地配置文件读取, 在集成环境中从 window.dtable 中读取

例子

import { username, userId } from 'setting.local';
import { getTableByName } from 'dtable-utils';

// const { username, userId } = window.dtable;

// 业务需求: 如果 行数据中的 “任务状态” 列是 “完成” 状态, 将改行中 “合格” 列设置为 “是”
const tableName = 'Table1';
const viewName = 'Default View'
const tables = window.dtableSDK.getTables();
window.dtableSDK.forEachRow(tableName, viewName, (row) => {
  // 实现业务需求
  if (row['任务状态'] === '完成') {
    const table = getTableByName(tables, tableName);
    const updated = {'合格': '是'};
    window.dtableSDK.modifyRow(table, row, updated);
  }
}, {username, userId});

getTableLinkRows

获取行数据关联其他表的所有行数据的 id 值

window.dtableSDK.getTableLinkRows(rows, table);

其中

  • rows: 行数据
  • table: 行数据所属的子表对象

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const rows = window.dtableSDK.getViewRows(view, table);

const findLinkRows = rows.slice(0, 5);
window.dtableSDK.getTableLinkRows(finLinkRows, table);

getViewRows

获取视图的行数据

window.dtableSDK.getViewRows(view, table);

其中

  • view: 视图对象
  • table: 子表对象

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const rows = window.dtableSDK.getViewRows(view, table);

getGroupRows

获取分组的行数据

window.dtableSDK.getGroupRows(view, table);

其中

  • view: 视图对象
  • table: 子表对象

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const rows = window.dtableSDK.getGroupRows(view, table);

getInsertedRowInitData

获取新增行的默认数据(如果表格中包含排序, 分组, 过滤等功能, 可以直接通过 api 获取新增行的默认值)

window.dtableSDK.getInsertedRowInitData(view, table, rowId);

其中

  • view: 视图对象
  • table: 子表对象
  • rowId: 新增行的前一行的 id 值

例子

import { getTableById, getViewById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

const viewId = '0000';
const view = getViewById(table.views, viewId);

const rows = window.dtableSDK.getViewRows(view, table);
const prevRow = rows[row.length - 1];

const defaultRowData = window.dtableSDK.getInsertedRowInitData(view, table, prevRow._id);

moveGroupRows

移动分组中的行

window.dtableSDK.moveGroupRows(table, targetIds, movePosition, movedRows, upperRowIds, updated, oldRows, groupbyColumns);

其中

  • table: 子表对象
  • targetIds: 移动行的目标位置行的 id 列表
  • movePosition: 移动的相对位置, move_above | move_below
  • movedRows: 移动的行数据列表
  • upperRowIds: 所有移动行之前所在位置的前一行的 id 列表
  • updated: 移动后移动行需要更新的新的属性值对象 (跨分组移动, 不同过滤条件的移动可能导致数据发生变化)
  • oldRows: 移动前移动行需要更新的旧的属性值对象
  • groupbyColumns: 当前视图分组的列数据

例子

import { getTableById } from 'dtable-utils';

const tables = window.dtableSDK.getTables();

const tableId = '0000';
const table = getTableById(tables, tableId);

// 1. 假设: 默认行数据列表如下, 按照分组列进行分组
const rows = [
  {_id: 'aaa', '名称', '小强', '年龄': '29', '出生日期': '1992-09-09', '分组': 'a'},
  {_id: 'bbb', '名称', '小明', '年龄': '25', '出生日期': '1996-09-09', '分组': 'a'},
  {_id: 'ccc', '名称', '小红', '年龄': '24', '出生日期': '1997-09-09', '分组': 'a'},
  {_id: 'ddd', '名称', '小丽', '年龄': '22', '出生日期': '1993-09-09', '分组': 'a'},
  {_id: 'eee', '名称', '小菜', '年龄': '27', '出生日期': '1992-09-09', '分组': 'b'},
  {_id: 'fff', '名称', '小龙', '年龄': '25', '出生日期': '1990-09-09', '分组': 'b'},
  {_id: 'ggg', '名称', '小马', '年龄': '26', '出生日期': '1996-09-09', '分组': 'b'},
  {_id: 'hhh', '名称', '小正', '年龄': '27', '出生日期': '1999-09-09', '分组': 'b'},
];

// 2. 将 小明,小丽移动到小正的下面, 相关参数如下
const targetIds = ['hhh', 'hhh'];
const move_position = 'move_below';
const movedRows = [
  {_id: 'bbb', '名称', '小明', '年龄': '25', '出生日期': '1996-09-09', '分组': 'a'},
  {_id: 'ddd', '名称', '小丽', '年龄': '22', '出生日期': '1993-09-09', '分组': 'a'},
];
const upperRowIds = ['aaa', 'ccc'];
const updated = {
  'bbb': {'分组': 'b'},
  'ddd': {'分组': 'b'},
};
const oldRows = {
  'bbb': {'分组': 'a'},
  'ddd': {'分组': 'a'},
};

const groupbyColumns = [{key: '分组', name: '分组', type: 'text', ...}];

const rows = window.dtableSDK.moveGroupRows(table, targetIds, movePosition, movedRows, upperRowIds, updated, oldRows, groupbyColumns);