例如,我有一个主细节网格。
Master定义为
key-relation模型,getDetailRowData方法中存在params中的父节点数据

但是如何从子视图中获取父节点数据呢?
尝试通过上下文菜单:
在右击- getContextMenuItems被执行,其中有一个输入params

在这个示例中,子网格没有任何行,上下文中的node是空的,没关系,,但是无论如何,至少应该可以通过grid检索父详细信息,对吗?
然后我尝试通过节点获取parent:

但是,您可以看到它的detail_173,而不是它的ROOT_NODE_ID,这给我带来了一个困惑。
因此,问题是如何通过子视图上下文菜单或任何其他可能的方式获取父节点数据(RecordID 173,以防万一)(不存储临时值,因为可以同时打开多个子节点)。
是的,我读过这部分访问细节网格API,还不清楚如何通过子网格获取父节点。
发布于 2018-12-18 11:37:15
一个非常可靠的解决方案是创建您自己的detailCellRenderer.
在init方法上:
this.masterNode = params.node.parent; 创建详细网格时:
detailGridOptions = {
...
onCellClicked: params => console.log(this.masterNode.data)
}下面是一个柱塞,演示如下:https://next.plnkr.co/edit/8EIHpxQnlxsqe7EO
发布于 2020-06-24 19:39:13
对于无法访问生命周期方法的React用户,可以使用Ag上下文通过detailGridOptions将父节点(或父数据)传递到详细网格。不需要遍历DOM或使用detailCellRenderer,除非您想:)
https://www.ag-grid.com/javascript-grid-context/
detailCellRendererParams: (masterGridParams) => ({
detailGridOptions: {
...
context: {
masterGrid: {
node: masterGridParams.node.parent,
data: masterGridParams.data
}
},
onCellClicked: detailGridParams => {
console.log(detailGridParams.context.masterGrid.node);
console.log(detailGridParams.context.masterGrid.data);
}
}
})发布于 2018-12-11 19:19:31
能够做到这一点。看一看我创建的plunk:从子记录中获取主记录-使用主/详细信息编辑单元格
右键单击任何子网格的单元格,并检查控制台日志。您将能够在日志中看到已单击的子记录的父记录。
实现有点棘手。我们需要在组件代码中遍历DOM。幸运的是,银栅为我们提供了访问它的机会。
params获取子网格的包装HTML节点--在这里的代码中,我将它作为gridOptionsWrapper.layoutElements数组的第6个元素。row。我叫row-id。gridApi获取父网格的行。 getContextMenuItems: (params): void => {
var masterId = params.node.gridOptionsWrapper.layoutElements[6]
.parentElement.parentElement.parentElement.getAttribute('row-id');
// get the parent's id
var id = masterId.replace( /^\D+/g, '');
console.log(id);
var masterRecord = this.gridApi.getRowNode(id).data;
console.log(masterRecord);
},
defaultColDef: { editable: true },
onFirstDataRendered(params) {
params.api.sizeColumnsToFit();
}注意:主网格的rowId__s是用[getRowNodeId]="getRowNodeId"定义的,假设account是父网格的主键。
https://stackoverflow.com/questions/53722447
复制相似问题