如何以编程方式控制行的切换?
Posted
技术标签:
【中文标题】如何以编程方式控制行的切换?【英文标题】:How to control programmatically the toggling of a row? 【发布时间】:2019-12-18 23:20:19 【问题描述】:我正在使用带有 REACT 的 MaterialTable(基于 Material-UI Table.material-table.com 的 React 数据表)更准确地说是详细面板 - material-table.com/#/docs/features/detail-panel
我需要什么?用户应该打开/关闭详细的面板并在它们之间拖放项目。
问题:每次我 React 渲染表格时,所有详细面板都会关闭。
我正在寻找一种解决方案,允许我为每一行设置一个标志,以表明它是隐藏的还是打开的。所以在渲染时.. React 不会自动关闭所有行。
我尝试在表格和面板上设置选项和事件 - 没有一个能够控制行切换。
代码很简单:
<MaterialTable
title = "Group Keywords Preview"
columns = [
title : "Group", field : "group" ,
title : "Weight", field : "weight"
]
options=
selection: true
data = my data ...
detailPanel = [
tooltip : 'Show Group',
render : rowData =>
return <my react component .. />
]
/>
material-table 是否有任何标志/方法来以编程方式切换行? 我可以用另一种方式吗?
提前致谢。
【问题讨论】:
【参考方案1】:class DetailPanelWithRowClick extends React.Component
constructor(props)
super(props);
this.tableRef = React.createRef();
render()
return (
<>
<MaterialTable
tableRef=this.tableRef
columns=[
title: 'Name', field: 'name' ,
title: 'Surname', field: 'surname' ,
title: 'Birth Year', field: 'birthYear', type: 'numeric' ,
title: 'Birth Place',
field: 'birthCity',
lookup: 34: 'İstanbul', 63: 'Şanlıurfa' ,
,
]
data=[
name: 'Mehmet', surname: 'Baran', birthYear: 1987, birthCity: 63 ,
name: 'Zerya Betül', surname: 'Baran', birthYear: 1987, birthCity: 63 ,
]
title="Detail Panel With RowClick Preview"
detailPanel=rowData =>
return (
<iframe
src="https://www.youtube.com/embed/C0DPdy98e4c"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
/>
)
onRowClick=(event, rowData, togglePanel) => togglePanel()
/>
<button onClick=() =>
this.tableRef.current.onToggleDetailPanel([0], rowData => <div>rowData.name</div>)
>toggle second line</button>
</>
)
你可以按照上面的例子使用。
【讨论】:
【参考方案2】:是的,您可以这样做。材料表通过向每个项目添加一个 tableData 对象来改变您的数据。
看起来像这样:
"tableData":"id":0,"checked":true
这控制行ID,如果项目被选中以及过滤等其他事情。 通过将选中的键更改为 true/false,您可以通过编程方式控制项目的选择。
希望这会有所帮助。编码愉快。
【讨论】:
感谢您的帮助。不幸的是,这在这里无济于事。我需要在行或面板上进行一些切换操作,而不是在数据上。除此之外,还有设置“检查”、“过滤”等选项,但没有设置“行打开/关闭”的选项 详细信息面板也通过 toggleDetailPanel 功能保存在其中。也许您可以使用它? 他们有文档页面还是只有material-table.com(更像示例和代码? 他们没有记录,因为这是内部数据处理。但你可以劫持它。以上是关于如何以编程方式控制行的切换?的主要内容,如果未能解决你的问题,请参考以下文章
如果标签栏控制器位于另一个 ui 控制器中,如何以编程方式切换标签? -迅速
如何在视图控制器中以编程方式切换视图? (Xcode,iPhone)
如何以编程方式从 UINavigationController (storyboard) 切换到 UIViewController