【发布时间】:2019-08-22 17:02:57
【问题描述】:
我将https://devexpress.github.io/devextreme-reactive/react/grid/ 用于数据表,我有列可见性过滤器,以及数百行和大约 15 列。我想隐藏那些任何行都没有任何数据的列。如果不手动检查每一行与每一列 (O(n^2)) 并创建地图并使用该信息,我该如何做到这一点?有什么直接属性还是别的什么?
【问题讨论】:
标签: reactjs devextreme
我将https://devexpress.github.io/devextreme-reactive/react/grid/ 用于数据表,我有列可见性过滤器,以及数百行和大约 15 列。我想隐藏那些任何行都没有任何数据的列。如果不手动检查每一行与每一列 (O(n^2)) 并创建地图并使用该信息,我该如何做到这一点?有什么直接属性还是别的什么?
【问题讨论】:
标签: reactjs devextreme
你可以使用Column Visibility。
带有TableColumnVisibility 和ColumnChooser 插件的网格组件提供了在运行时隐藏或显示表格列的功能。
但是你需要检查哪一列对所有行都没有任何值,一旦你得到所有这些列,你只需要在TableColumnVisibility 中传递道具。请查看以下示例
代码片段
render() {
const { rows, columns } = this.state;
//Check if all column value is blak for all row then need to push value in hiddenColumnNames.
let hiddenColumnNames = columns.reduce((r,v)=>{
if(!rows.find(obj=>obj[v.name] !== "")){
r.push(v.name);
}
return r;
},[]);//Hidden column will be [age,city]
return (
<Paper>
<Grid rows={rows} columns={columns}>
<Table />
<TableHeaderRow />
<TableColumnVisibility
hiddenColumnNames={hiddenColumnNames}
/>
</Grid>
</Paper>
);
}
你可以在这里查看工作CodeSandbox
【讨论】:
how to hide 并且有一个属性将隐藏该列。那就是满足你的要求。同样,如果您不想使用该属性,那么您可以只传递所有行值columns={columns} 的那些列。喜欢这个columns = columns.reduce((r,v)=>{ if(rows.find(obj=>obj[v.name] !== "")){ r.push(v.name); } return r; },[]);//only show this columns column will be columns