Skip to content

数据表格

数据表格组件提供了强大的数据展示和管理功能,使用户能够高效处理大量数据。支持分页、排序、筛选、数据加载等功能,可以展示静态数据或通过接口动态加载数据,有助于实现复杂的数据管理和展示场景。

data-table.png

基础使用

获取表格数据

通过注入的 api.el 方法可以获取数据表格组件实例,访问表格数据:

js
function onChange($inject) {
    // 获取数据表格组件实例
    const dataTableInstance = $inject.api.el('ref_F2vulxvqc841dac');
    // 获取当前表格数据列表
    const list = dataTableInstance.list;
    console.log('当前表格数据:', list);

    // 获取总数
    const total = dataTableInstance.total;
    console.log('总数据量:', total);

    // 获取当前页码
    const currentPage = dataTableInstance.currentPage;
    console.log('当前页码:', currentPage);
}

获取表格DOM元素

通过 getEl 方法可以获取表格的DOM元素,进行更底层的操作:

js
function getTableElement($inject) {
    const dataTableInstance = $inject.api.el('ref_F2vulxvqc841dac');
    // 获取表格DOM元素
    const tableEl = dataTableInstance.getEl();
    console.log('表格元素:', tableEl);

    // 获取选中的行数据
    if (dataTableInstance.selection) {
        const selectedRows = tableEl.getSelectionRows();
        console.log('选中的行:', selectedRows);
    }
}

刷新表格数据

使用 initPage 方法可以重新初始化表格并刷新数据:

js
function refreshTable($inject) {
    const dataTableInstance = $inject.api.el('ref_F2vulxvqc841dac');
    // 重新初始化表格
    dataTableInstance.initPage();
}

切换页码

通过 changePage 方法可以程序化切换页码:

js
function goToPage($inject, pageNum) {
    const dataTableInstance = $inject.api.el('ref_F2vulxvqc841dac');
    // 切换到指定页码
    dataTableInstance.changePage(pageNum);
}

配置项

数据表格提供了丰富的配置选项,您可以通过在设计器中配置属性来自定义表格的行为和外观。

属性名类型默认值必需说明
columnArray[]表格列配置
globalDataKeyString, Object-全局数据键名
fetchObject-数据获取配置
dataArray[]静态数据
buttonObject-操作按钮配置
indexBoolean-是否显示序号列
selectionBoolean-是否显示选择列
pageObject-分页配置

重要说明:

  • column:配置表格列的显示,包括列标题、字段名、宽度、对齐方式等
  • globalDataKey:使用全局数据源时指定数据键名
  • fetch:配置通过接口获取数据的相关参数,包括URL、请求方法等
  • data:当不使用接口时,可以直接传入静态数据数组
  • page:配置分页相关参数,包括每页条数、页码字段等

事件

数据表格提供了丰富的事件,方便您监听表格的各种状态变化并执行相应的处理。

事件名参数说明
sortChangedata排序变化事件,当用户点击列标题进行排序时触发
handleClick{name, key, scope, column}按钮点击事件,当用户点击操作按钮时触发
currentChangen页码变化事件,当用户切换页码时触发
pageSizeChangesize每页条数变化事件,当用户更改每页条数时触发

事件使用示例

监听排序变化

js
function handleSortChange(data) {
    console.log('排序变化:', data);
    // data包含prop(字段名)和order(排序方向)
    const { prop, order } = data;
    console.log('排序字段:', prop);
    console.log('排序方向:', order);
}

监听按钮点击

js
function handleClick({ name, key, scope, column }) {
    console.log('按钮名称:', name);
    console.log('按钮键值:', key);
    console.log('当前行数据:', scope.row);
    console.log('当前列数据:', column);

    // 根据按钮名称执行不同操作
    if (name === '编辑') {
        // 编辑逻辑
    } else if (name === '删除') {
        // 删除逻辑
    }
}

监听页码变化

js
function handleCurrentChange(pageNum) {
    console.log('切换到的页码:', pageNum);
    // 可以在这里执行分页相关的逻辑
}

监听每页条数变化

js
function handlePageSizeChange(size) {
    console.log('每页条数:', size);
    // 可以保存用户的偏好设置
}

方法

数据表格提供了多种方法,方便您进行程序化控制。

方法名参数说明返回值
getEl-获取表格DOM元素Element
deepGetobject, path, defaultValue深度获取对象属性(内部使用)any
initPage-初始化分页-
btnPropsbtn, scope获取按钮属性(内部使用)Object
getLimit-获取分页大小Number
nextList-获取下一页数据(内部使用)-
fetchDatapage获取数据(内部使用)Promise
changePagen切换页码-
changePageSizesize切换每页条数-
getPageSizes-获取分页大小选项Array
makePage-创建分页组件(内部使用)VNode
checkBtnShowscope, btn检查按钮显示(内部使用)Boolean
makeButtonCol-创建操作列(内部使用)VNode
makeColumncol创建表格列(内部使用)VNode
makeTdcol, scope创建表格单元格(内部使用)VNode

方法使用示例

获取表格选中的行

js
function getSelectedRows($inject) {
    const dataTableInstance = $inject.api.el('ref_F2vulxvqc841dac');
    const tableEl = dataTableInstance.getEl();

    if (dataTableInstance.selection) {
        const selectedRows = tableEl.getSelectionRows();
        console.log('选中的行:', selectedRows);
        return selectedRows;
    }
}

切换每页条数

js
function changePageSize($inject, size) {
    const dataTableInstance = $inject.api.el('ref_F2vulxvqc841dac');
    // 切换到指定的每页条数
    dataTableInstance.changePageSize(size);
}

获取当前页码

js
function getCurrentPage($inject) {
    const dataTableInstance = $inject.api.el('ref_F2vulxvqc841dac');
    console.log('当前页码:', dataTableInstance.currentPage);
    console.log('每页条数:', dataTableInstance.getLimit());
}

Data

数据表格的内部数据属性如下:

数据名初始值说明
total0总数据量
loadingfalse加载状态
unwatchnull监听器清理函数
list[]当前页数据
currentPage1当前页码
id1组件刷新标识
order''排序字段
orderBy''排序方式
currentSizeundefined当前每页条数
filterListArray过滤后的数据列表

数据说明:

  • total:数据的总条数,用于分页计算
  • loading:表格的加载状态,在数据加载时显示加载动画
  • unwatch:数据监听器的清理函数,用于取消监听
  • list:当前页面显示的数据列表
  • currentPage:当前所在的页码,从1开始
  • id:组件的刷新标识,用于强制重新渲染组件
  • order:当前排序的字段名
  • orderBy:排序方向,可能是 'ASC' 或 'DESC'
  • currentSize:用户自定义的每页条数
  • filterList:经过列过滤后的数据列表