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

Ag grid ag网格-如何通过上下文菜单从子网格获取父节点?,ag-grid,Ag Grid,例如,我有一个网格 Master\Detail定义为键关系模型,在getDetailRowData方法上父节点数据存在于params 但是如何从子视图中获取父节点数据呢 通过上下文菜单尝试: 右键单击-getContextMenuItemsGet executed,它有一个输入params 在这个示例中,子网格没有任何行,上下文参数中的节点为null,可以, 但无论如何,至少可以通过网格API检索父级详细信息,不是吗? 然后我尝试通过节点获取parent: 但是,您可以看到它的根节点ID,而

例如,我有一个网格

Master\Detail定义为
键关系
模型,在
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。