DBTable配置成Tree Table自动展开属性不起作用。
whyuan1976 opened this issue · 10 comments
whyuan1976 commented
defaultExpandAllRows 不起作用。手工可以点开。试了一下,底层应该是可以的。
jiangxy commented
我试了下貌似是可以,直接改的InnerTable.js,代码类似这样:
<Table rowSelection={rowSelection} columns={this.tableSchema} dataSource={this.state.data} pagination={false}
loading={tableLoading} expandedRowRender={record => <p>{'test'}</p>}
defaultExpandedRowKeys={[1000, 1001]}/>
是不是defaultExpandAllRows的数据类型不对?如果写成['1000', '1001']
是不会生效的
whyuan1976 commented
whyuan1976 commented
做test的时候,加过好像没起作用。新作一个页面,同样代码又是可以的。不知道DBTable里面有什么特殊操作吗?
1935326097@qq.com
发件人: ywzhaiqi
发送时间: 2017-06-24 13:38
收件人: jiangxy/react-antd-admin
抄送: whyuan1976; Author
主题: Re: [jiangxy/react-antd-admin] DBTable配置成Tree Table自动展开属性不起作用。 (#40)
InnerTable.js 里的 defaultExpandAllRows 加了?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
ywzhaiqi commented
传递给 table 的 dataSource 的数据是筛选过的(结构如下),默认没有了 children
{
$$rawData: {},
id: 1,
title: 'aaa'
}
可修改 InnerTable.js
文件
transformRawDataToTable(obj) {
const newObj = {};
// 这段代码真是好蛋疼...
for (const key in obj) {
// added to Support children
if (key === 'children') {
// add key
obj.children.forEach(a => {
a.key = a.id;
});
newObj[key] = obj[key];
continue;
}
if (!this.fieldMap.get(key))
continue;
ywzhaiqi commented
whyuan1976 commented
树形结构的table(例如组织关系)是不需要2次加载的,这时希望能使用defaultExpandAllRows 全展开。按照指定key的方式,是可以展开的,就是太麻烦了。二次加载的table也做过,加载的数据需要按照展开的key做map保存。我偷懒展开一个就自动关闭其他的,只需要保存最新展开的data。
ywzhaiqi commented
@whyuan1976
没懂,二次加载是在 expandedRowRender
函数里面的吗?这不是组件,没法设置 ajax 的返回值。
whyuan1976 commented
二次加载是在onExpand里实现,二次加载这部分没问题。是一次性加载树形结构的数据,无法通过defaultExpandAllRows 属性默认展开所有节点。
ywzhaiqi commented
原来是 onExpand
,谢谢。
你的这个问题是 antd table 自身的问题。你的示例改成 componentDidMount 加载数据,默认就不会展开了。
https://codepen.io/ywzhaiqi/pen/YQLNva
whyuan1976 commented
@ywzhaiqi
谢谢。好像是的,改成componentWillMount就没有问题。