DataTable
DataTable
用来以表格的形式展示数据。
底层使用 Ant Design Table 开发,但是提供了以下附加的功能:
-
开箱支持
DataCollectionStore
-
强大的过滤器
-
支持操作按钮(即 CRUD 操作)
同时,<DataTable>
通过 tableProps
和 columnDefinitions
属性为开发者提供了底层 Table
的完全访问(见下例)。
使用 <DataTable>
API 示例:
<DataTable dataCollection={this.dataCollection}
columnDefinitions={[
'item',
'manufacturer',
{
field: 'price',
columnProps: {
align: 'right'
}
}
]}
onRowSelectionChange={this.handleRowSelectionChange}
buttons={buttons}
tableProps={{
bordered: true
}}
/>
-
dataCollection
-DataCollectionStore
实例 -
columnDefinitions
- 描述需要展示的列。下面有更详细解释。 -
onRowSelectionChange
- 回调函数,使用当前选中行(可以是多行)的 id 作为参数。能与buttons
一起使用,比如进行 CRUD 操作。 -
buttons
- React 元素数组,表示要添加到表格上方的控制按钮 -
tableProps
- 可以用来覆盖任何底层 表格的属性
废弃的属性(使用 columnDefinitions
代替):
-
fields
- 需要展示的属性名称 -
columnProps
- 可以用来覆盖底层 列属性,应用到每一列
columnDefinitions 更灵活并且提供了更强大自定义列的功能。如果同时使用,columnDefinitions 的配置将会覆盖 fields 和 columnProps 的配置。
|
columnDefinitions
columnDefinitions
描述需要显示的列。列可以展示实体的属性,也可以展示其他内容(比如,操作按钮列、计算字段列等)。
有三种定义列的方式:
-
直接设置
字符串
类型的属性名称。此时,DataTable
会用默认的配置渲染该属性列。<DataTable dataCollection={this.dataCollection} columnDefinitions={[ 'manufacturer', // 其他列 ]} />
-
如果您希望自定义默认列,可以使用
ColumnDefinition
对象,其中field
是属性名称,columnProps
是 Antd ColumnProps 对象。设置在columnProps
的属性名称会覆盖默认的属性。<DataTable dataCollection={this.dataCollection} columnDefinitions={[ { field: 'manufacturer', // 属性名 columnProps: { // Ant Design ColumnProps 对象 align: 'right' } }, // 其他列 ]} />
-
如果对于某些列,您不需要绑定至实体属性,可以用
columnProps
单独创建,不要指定field
即可。<DataTable dataCollection={this.dataCollection} columnDefinitions={[ { columnProps: { // Ant Design ColumnProps 对象 render: (text, record) => { /* 渲染一些自定义的内容 */ } } }, // 其他列 ]} />