2020-02-04 23:13:53 +08:00
|
|
|
|
# 数据表格 Data Table
|
2019-12-10 18:49:06 +08:00
|
|
|
|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
<!--single-column-->
|
2019-12-10 18:49:06 +08:00
|
|
|
|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
数据表格用来显示一些格式化信息。
|
2019-12-10 18:49:06 +08:00
|
|
|
|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
## 演示
|
|
|
|
|
<n-alert type="warning" title="注意" style="margin-bottom: 16px;">
|
|
|
|
|
<n-ol align-text>
|
2020-02-17 09:55:20 +08:00
|
|
|
|
<n-li>每一列数据都要有唯一的 key,否则要在 table 上声明 <n-text code>row-key</n-text> 属性</n-li>
|
2020-02-04 22:43:40 +08:00
|
|
|
|
<n-li>在受控状态下,你最好提前声明每一个你可能用到的属性。因为 Vue 并不能追踪使用常规方式添加的属性。</n-li>
|
|
|
|
|
</n-ol>
|
|
|
|
|
</n-alert>
|
2019-12-10 18:49:06 +08:00
|
|
|
|
|
|
|
|
|
```demo
|
|
|
|
|
basic
|
2020-02-24 16:25:02 +08:00
|
|
|
|
border
|
2020-03-03 18:08:58 +08:00
|
|
|
|
size
|
2020-02-04 22:43:40 +08:00
|
|
|
|
filterAndSorter
|
|
|
|
|
select
|
|
|
|
|
controlled-page
|
|
|
|
|
controlled-filter
|
|
|
|
|
controlled-sorter
|
|
|
|
|
fixedHeader
|
|
|
|
|
fixedHeaderColumn
|
|
|
|
|
ellipsis
|
|
|
|
|
renderHeader
|
|
|
|
|
customStyle
|
|
|
|
|
ajaxUsage
|
2019-12-10 18:49:06 +08:00
|
|
|
|
```
|
|
|
|
|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
## Props
|
2020-02-07 23:40:07 +08:00
|
|
|
|
|名称|类型|默认值|说明|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|-|-|-|-|
|
2020-03-19 21:53:06 +08:00
|
|
|
|
|theme|`'light' \| 'dark'`|`null`||
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|data|`Array<object>`|`[]`|需要展示的数据|
|
|
|
|
|
|columns|`Array<Column>`||需要展示的列,**必需**|
|
2020-02-28 19:46:06 +08:00
|
|
|
|
|max-height|`number \| string`|`null`|表格的最大高度,如果内容高度高于它,那么表头将固定|
|
|
|
|
|
|min-height|`number \| string`|`null`|表格的最低高度|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|loading|`boolean`|`false`||
|
2020-02-28 19:46:06 +08:00
|
|
|
|
|scroll-x|`number \| string`|`null`|表格内容的横向宽度,如果列被水平固定了,则需要设定它|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|pagination|`false \| object`|`false`|属性参考 [Pagination props](n-pagination#Props)|
|
2020-04-29 19:33:18 +08:00
|
|
|
|
|paging|`boolean`|`true`|表格是否自动分页数据,在异步的状况下你可能需要把它设为 `false`|
|
2020-02-05 12:21:18 +08:00
|
|
|
|
|row-class-name|`string \| (rowData: object, index : number) => string \| object`|`null`||
|
2020-04-10 16:33:30 +08:00
|
|
|
|
|checked-row-keys|`Array<string \| number> \| null`|`null`|被选中的列的 key|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|default-checked-row-keys|`Array<string \| number>`|`[]`||
|
2020-02-05 12:21:18 +08:00
|
|
|
|
|row-key|`(rowData: object) => number \| string`|`null`|通过行数据创建行的 key(如果你不想给每一行加上 key)|
|
2020-02-24 16:25:02 +08:00
|
|
|
|
|bordered|`boolean`|`true`||
|
|
|
|
|
|single-line|`boolean`|`true`||
|
2020-03-17 17:17:29 +08:00
|
|
|
|
|single-column|`boolean`|`false`||
|
2020-03-03 12:40:05 +08:00
|
|
|
|
|size|`'small' \| 'medium' \| 'large'`|`'medium'`||
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|
|
|
|
|
## Methods
|
|
|
|
|
这些方法可以帮助你在非受控的状态下改变表格,但是,并不推荐在异步的状况下使用这些方法。如果需要异步操作,最好用**受控**的方式使用表格。
|
|
|
|
|
|
2020-02-07 23:40:07 +08:00
|
|
|
|
|名称|参数|说明|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|-|-|-|
|
2020-03-27 17:48:05 +08:00
|
|
|
|
|filters|`(filters: { [string \| number]: Array<string \| number> }) => void`|设定表格当前的过滤器|
|
2020-03-27 17:32:53 +08:00
|
|
|
|
|sort|`(columnKey: string \| null, order: 'ascend' \| 'descend' \| false) => void`|如果 columnKey 设为 `null`,那它和 clearSorter 效果一致|
|
2020-02-05 12:21:18 +08:00
|
|
|
|
|page|`(page: number) => void`||
|
|
|
|
|
|clearFilters|`() => void`||
|
|
|
|
|
|clearSorter|`() => void`||
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Events
|
2020-02-07 23:40:07 +08:00
|
|
|
|
|名称|参数|说明|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|-|-|-|
|
2020-04-10 16:33:30 +08:00
|
|
|
|
|filters-change|`(filters: { [string \| number]: Array<string \| number> \| string \| number }, initiatorColumn: Column)`||
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|sorter-change|`({ columnKey: string \| number, sorter: 'default' \| function \| boolean, order: 'ascend' \| 'descend' \| false } \| null)`|如果在变动后没有激活的排序,那么 sorter-change 将发出 `null`|
|
|
|
|
|
|page-change|`(page: number)`||
|
|
|
|
|
|page-size-change|`(pageSize: number)`||
|
|
|
|
|
|checked-row-keys-change|`(keys: Array<string \| number>)`||
|
|
|
|
|
|
2019-12-10 18:49:06 +08:00
|
|
|
|
## API
|
2020-03-27 17:48:05 +08:00
|
|
|
|
### Column Properties
|
|
|
|
|
|名称|类型|默认值|说明|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|-|-|-|-|
|
2020-02-05 12:21:18 +08:00
|
|
|
|
|render|`(h, rowData: object) => VNode \| Array<VNode>`|`null`|渲染函数,渲染这一列的每一行的单元格|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|type|`'default' \| 'selection'`|`default`||
|
|
|
|
|
|disabled|`(rowData: object, index: number) => boolean`|`() => false`||
|
|
|
|
|
|align|`'left' \| 'right' \| 'center'`|`'left'`|列内的文本排列|
|
|
|
|
|
|ellipsis|`boolean`|`false`||
|
|
|
|
|
|className|`string`|`null`||
|
2020-02-29 14:55:52 +08:00
|
|
|
|
|title|`string \| (() => VNode \| Array<VNode>)`|`null`|可以是渲染函数|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|key|`string`||这一列的 key,在表格未设定 row-key 的时候是**必须**的。|
|
|
|
|
|
|sorter|`boolean \| function \| 'default'`|`false`|这一列的排序方法。如果设为 `'default'` 表格将会使用一个内置的排序函数;如果设为 `true`,表格将只会在这列展示一个排序图标,在异步的时候可能有用。其他情况下它工作的方式类似 `Array.sort` 的对比函数|
|
|
|
|
|
|defaultSortOrder|`'descend' \| 'ascend' \| false`|`false`|非受控状态下表格默认的排序方式|
|
|
|
|
|
|sortOrder|`'descend' \| 'ascend' \| false \| null`|`null`|受控状态下表格的排序方式。如果不是 `null`,表格整体的排序将会是受控的。如果多列都设定了有效值,那么只有第一个会生效|
|
2020-03-06 20:37:13 +08:00
|
|
|
|
|filter|`boolean \| (optionValue: string \| number, rowData: object) => boolean \| 'default'`|`false`|这一列的过滤方法。如果设为 `true`,表格将只会在这列展示一个排序图标,在异步的时候可能有用。|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|filterMode|`'and' \| 'or'`|`'or'`||
|
|
|
|
|
|filterOptions|`Array<{ label: string, value: string \| number}>`|`[]`||
|
2020-04-10 16:33:30 +08:00
|
|
|
|
|filterOptionValues|`Array<string \| number> \| null`|`undefined`|受控状态下,当前激活的过滤器选项值数组。如果不做设定,这一列的过滤行为将是非受控的(过滤器多选时生效)|
|
|
|
|
|
|filterOptionValue|`string \| number \| null`|`undefined`|受控状态下,当前激活的过滤器选项值。如果不做设定,这一列的过滤行为将是非受控的(过滤器单选时生效)|
|
|
|
|
|
|defaultFilterOptionValues|`Array<string \| number>`|`[]`|非受控状态下默认的过滤器选项值(过滤器多选时生效)|
|
|
|
|
|
|defaultFilterOptionValue|`string \| number`|`null`|非受控状态下默认的过滤器选项值(过滤器单选时生效)|
|
2020-02-04 22:43:40 +08:00
|
|
|
|
|filterMultiple|`boolean`|`true`||
|
|
|
|
|
|fixed|`'left \| 'right' \| false`|`false`||
|
2020-02-17 09:55:20 +08:00
|
|
|
|
|width|`number \| string`|`null`|列的宽度,在列固定时是**必需**的|
|