Ag grid ag网格-如何通过上下文菜单从子网格获取父节点?
例如,我有一个网格 Master\Detail定义为Ag grid ag网格-如何通过上下文菜单从子网格获取父节点?,ag-grid,Ag Grid,例如,我有一个网格 Master\Detail定义为键关系模型,在getDetailRowData方法上父节点数据存在于params 但是如何从子视图中获取父节点数据呢 通过上下文菜单尝试: 右键单击-getContextMenuItemsGet executed,它有一个输入params 在这个示例中,子网格没有任何行,上下文参数中的节点为null,可以, 但无论如何,至少可以通过网格API检索父级详细信息,不是吗? 然后我尝试通过节点获取parent: 但是,您可以看到它的根节点ID,而
键关系
模型,在getDetailRowData
方法上父节点数据存在于params
但是如何从子视图中获取父节点数据呢
通过上下文菜单尝试:
右键单击-getContextMenuItems
Get executed,它有一个输入params
在这个示例中,子网格没有任何行,上下文参数中的节点
为null,可以,
但无论如何,至少可以通过网格API检索父级详细信息,不是吗?
然后我尝试通过节点获取parent
:
但是,您可以看到它的根节点ID
,而不是详细信息173
,这让我感到困惑
所以问题是如何通过子视图上下文菜单或任何其他可能的方式(不存储临时值,因为可以同时打开多个子节点)获取父节点数据(RecordID 173以防万一)
是的,我已经阅读了这一部分,但仍然不清楚如何通过子网格获取父节点。能够实现它。看看我创建的plunk: 右键单击任意子网格的单元格,并检查控制台日志。您将能够在已单击的子记录的日志中看到父记录
实现有些棘手。我们需要在组件代码中遍历DOM。幸运的是,它为我们提供了访问权限
params
获取子网格的包装器HTML节点-在代码中,我将其作为gridOptionsWrapper.layoutElements
数组的第6个元素行
。获取它的行id
gridApi
获取父网格的行注意:主网格的
rowId
s由[getRowNodeId]=“getRowNodeId”
定义,假设帐户是父网格的主键。能够实现它。看看我创建的plunk:
右键单击任意子网格的单元格,并检查控制台日志。您将能够在已单击的子记录的日志中看到父记录
实现有些棘手。我们需要在组件代码中遍历DOM。幸运的是,它为我们提供了访问权限
从params
获取子网格的包装器HTML节点-在代码中,我将其作为gridOptionsWrapper.layoutElements
数组的第6个元素
获取其三级父元素-这是父元素的实际行
。获取它的行id
使用它可以使用父网格的gridApi
获取父网格的行
注意:主网格的rowId
是使用[getRowNodeId]=“getRowNodeId”
定义的,假设帐户是父网格的主键。一个非常可靠的解决方案是创建自己的detailCellRenderer
在init
方法上:
this.masterNode = params.node.parent;
创建详图格线时:
detailGridOptions = {
...
onCellClicked: params => console.log(this.masterNode.data)
}
下面是一个plunker演示:
一个非常可靠的解决方案是创建自己的detailCellRenderer
在init
方法上:
this.masterNode = params.node.parent;
创建详图格线时:
detailGridOptions = {
...
onCellClicked: params => console.log(this.masterNode.data)
}
下面是一个plunker演示:
对于无法访问生命周期方法的React Hook用户,请使用Ag网格上下文通过detailGridOptions将父节点(或父数据)传递到详细网格。无需遍历DOM或使用detailCellRenderer,除非您希望:)
对于无法访问生命周期方法的React Hook用户,请使用Ag网格上下文通过detailGridOptions将父节点(或父数据)传递到详细网格。无需遍历DOM或使用detailCellRenderer,除非您希望:)
尝试先打开多个并使用上下文菜单\second\third,您将得到更新了plunk的结果。检查链接。是的,我可以看到父记录被正确记录。你能提到确切的步骤吗?[getRowNodeId]=“getRowNodeId”
-是的,在我的例子中是这样的:返回数据。RecordID
;看来你的样本是有效的。还尝试了api.gridOptionsWrapper.layoutElements[6].parentElement.parentElement.parentElement.getAttribute('row-id')
-似乎正确;我使用过的最肮脏的黑客之一)不,对我不起作用(agGrid v22)。没有要查询的第6个layoutElement。请先尝试打开多个并使用上下文菜单\second\third,您将无法得到预期的结果,因为您已更新了plunk。检查链接。是的,我可以看到父记录被正确记录。你能提到确切的步骤吗?[getRowNodeId]=“getRowNodeId”
-是的,在我的例子中是这样的:返回数据。RecordID
;看来你的样本是有效的。还尝试了api.gridOptionsWrapper.layoutElements[6].parentElement.parentElement.parentElement.getAttribute('row-id')
-似乎正确;我使用过的最肮脏的黑客之一)不,对我不起作用(agGrid v22)。没有要查询的第6个layoutElement。