我正在尝试控制哪些列将显示在MUI Datagrid工具栏内的<GridToolbarColumnsButton/>
组件上(见下图)
首选解决方案:
使用API,因为我还没有找到任何现有的功能,甚至没有任何<GridToolbarColumnsButton/>
的文档
到目前为止我的解决方法:
使用vanilla js将面板内包含文本“Commodity”的行作为目标,向该行添加一个类,然后在DataGrid组件Props中为该类传递display:'hide'
。
它的问题是,由于列面板没有在初始渲染时安装,它不会隐藏“商品”选项,直到我打开面板,然后强制重新渲染。
useEffect( () => {
var divs = document.querySelectorAll('div .MuiDataGrid-columnsPanelRow')
for (let i = 0; i < divs.length; i++) {
if (divs[i].textContent === 'Commodity') {
divs[i].classList.add("column-panel-cust");
}
}
})
<DataGridPro
...
componentsProps={{
panel: {
sx: {
paddingTop: '15px',
'& .column-panel-cust': {
display: 'none',
},
},
},
/>
2条答案
按热度按时间4dbbbstv1#
找不到此函数的API钩子,但可以通过向
<GridToolbarColumnsButton onBlur={handleOnBlur}/>
添加一个onBlur来运行此函数:它将
column-panel-cust
类添加到带有文本商品的div中,该类的样式在DataGrid组件Props:qhhrdooz2#
你也可以只使用一些纯css。你只需要定位列的位置。例如,我在这里做了同样的事情,从GridToolbarColumnsButton(最后一项)隐藏菜单。