ag-grid - 如何通过上下文菜单从子网格获取父节点?

un.*_*ike 7 ag-grid

例如,我有一个主\细节网格。

Master\Detail 定义为key-relation模型,getDetailRowData方法父节点数据存在于params

但是如何从子视图中获取父节点数据呢?

通过上下文菜单尝试:

右键单击 - getContextMenuItems已执行,有一个输入params

在此示例中,child-grid 没有任何行,并且nodecontext-params 为 null,没关系, 但无论如何,至少应该可以通过 grid API 检索父级详细信息,不是吗?

parent然后我尝试通过节点 获取:在此输入图像描述 但不是如detail_173你所见ROOT_NODE_ID,这对我来说是一个困惑。

所以问题是如何通过子视图上下文菜单或任何其他可能的方式获取父节点数据(RecordID 173,以防万一)(不存储临时值,因为可以同时打开多个子节点)

是的,我已经阅读了这部分访问详细网格 API,但仍然不清楚如何通过子网格获取父节点。

hin*_*han 7

对于无法访问生命周期方法的 React Hook 用户,请使用 Ag-Grid Context 通过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);
        }
    }
})
Run Code Online (Sandbox Code Playgroud)


ahm*_*g94 1

一个非常可靠的解决方案是创建您自己的detailCellRenderer

关于init方法:

this.masterNode = params.node.parent; 
Run Code Online (Sandbox Code Playgroud)

创建细节网格时:

detailGridOptions = {
    ...
    onCellClicked: params => console.log(this.masterNode.data)
}
Run Code Online (Sandbox Code Playgroud)

这是一个证明这一点的笨蛋: https ://next.plnkr.co/edit/8EIHpxQnlxsqe7EO