Component_DataTable.md

February 5, 2025 · View on GitHub

数据表格 XNDataTable

本组件是基于 Naive-UI 的 NDataTable 组件二次封装的。


使用方式

更多用法请见 Demo。

Template Style:

注意:这只是个用于定义 columns 属性的语法糖(会带来一定的性能损失),所以你不能用其他组件去包裹 XNDataTableColumn

<script setup>
  const data = [
    { key: 1, name: 'Athos', age: 20 },
    { key: 2, name: 'Porthos', age: 19 },
    { key: 3, name: 'Aramis', age: 18 }
  ];
</script>
<template>
  <x-n-data-table :data="data">
    <x-n-data-table-column type="selection" />
    <x-n-data-table-column key="no" title="NO.">
      <template #render-cell="{ rowIndex }">
        <div>{{ rowIndex + 1 }}</div>
      </template>
    </x-n-data-table-column>
    <x-n-data-table-column key="name" title="Name" />
    <x-n-data-table-column key="age" title="Age" />
    <x-n-data-table-column key="actions" title="Actions">
      <template #render-cell="{ column, rowData, rowIndex }">
        <button>{{ 'Say hello to ' + rowData.name }}</button>
      </template>
    </x-n-data-table-column>
  </x-n-data-table>
</template>

Scoped Slots:

<script setup>
  const columns = [
    { type: 'selection' },
    { key: 'no', title: 'NO.' },
    { key: 'name', title: 'Name' },
    { key: 'age', title: 'Age' },
    { key: 'actions', title: 'Actions' }
  ];
  const data = [
    { key: 1, name: 'Athos', age: 20 },
    { key: 2, name: 'Porthos', age: 19 },
    { key: 3, name: 'Aramis', age: 18 }
  ];
</script>
<template>
  <x-n-data-table :columns="columns" :data="data">
    <template #render-cell="{ column, rowData, rowIndex }">
      <template v-if="column.key === 'no'">
        <div>{{ rowIndex + 1 }}</div>
      </template>
      <template v-else-if="column.key === 'actions'">
        <button>{{ 'Say hello to ' + rowData.name }}</button>
      </template>
    </template>
  </x-n-data-table>
</template>

API

XNDataTable Props:

其他 Props 略,与 NDataTable 保持一致,请参考 Naive-UI 文档

XNDataTable Slots:

名称参数说明版本
default表格的内容
summary总结栏行0.6.0
render-column{ column }自定义列头的内容
render-cell{ column, rowData, rowIndex, value }自定义单元格的内容
render-expand{ rowData, rowIndex }自定义展开行的内容
render-expand-icon{ rowData, expanded }自定义展开图标0.14.0
render-filter{ column, active, show }自定义过滤器触发元素0.6.0
render-filter-icon{ column, active, show }自定义过滤器图标0.6.0
render-filter-menu{ column, hide }自定义过滤器菜单0.6.0
render-sorter{ column, order }自定义排序触发元素0.6.0
render-sorter-icon{ column, order }自定义排序图标0.6.0

其他 Slots 略,与 NDataTable 保持一致,请参考 Naive-UI 文档

XNDataTable Methods:

其他 Methods 略,与 NDataTable 保持一致,请参考 Naive-UI 文档

XNDataTableColumn Props:

其他 Props 略,与 NDataTableColumn 保持一致,请参考 Naive-UI 文档。注意 childrenrenderrender-expand 属性不可用。

XNDataTableColumn Slots:

名称参数说明版本
title自定义列头的内容0.6.0
render-cell{ rowData, rowIndex, value }自定义单元格的内容0.6.0
render-expand{ rowData, rowIndex }自定义展开行的内容0.6.0

XNDataTableSummaryRow Slots:

名称参数说明版本
default{ pageData }总结栏单元格0.6.0

XNDataTableSummaryCell Props:

名称类型默认值说明版本
keystring | number与列属性对应的唯一 Key 值0.6.0
row-spannumber行合并0.6.0
col-spannumber列合并0.6.0
valuestring内容。当使用 default 插槽时该属性无效0.6.0

XNDataTableSummaryCell Slots:

名称参数说明版本
default{ pageData }自定义总结栏内容0.6.0