首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ag-网格-如何通过上下文菜单从子网格获取父节点?

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

Stack Overflow用户
提问于 2018-12-11 10:47:07
回答 4查看 6.8K关注 0票数 5

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

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

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

尝试通过上下文菜单:

在右击- getContextMenuItems被执行,其中有一个输入params

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

然后我尝试通过节点获取parent

但是,您可以看到它的detail_173,而不是它的ROOT_NODE_ID,这给我带来了一个困惑。

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

是的,我读过这部分访问细节网格API,还不清楚如何通过子网格获取父节点。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-12-18 11:37:15

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

init方法上:

代码语言:javascript
复制
this.masterNode = params.node.parent; 

创建详细网格时:

代码语言:javascript
复制
detailGridOptions = {
    ...
    onCellClicked: params => console.log(this.masterNode.data)
}

下面是一个柱塞,演示如下:https://next.plnkr.co/edit/8EIHpxQnlxsqe7EO

票数 1
EN

Stack Overflow用户

发布于 2020-06-24 19:39:13

对于无法访问生命周期方法的React用户,可以使用Ag上下文通过detailGridOptions将父节点(或父数据)传递到详细网格。不需要遍历DOM或使用detailCellRenderer,除非您想:)

https://www.ag-grid.com/javascript-grid-context/

代码语言:javascript
复制
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);
        }
    }
})
票数 6
EN

Stack Overflow用户

发布于 2018-12-11 19:19:31

能够做到这一点。看一看我创建的plunk:从子记录中获取主记录-使用主/详细信息编辑单元格

右键单击任何子网格的单元格,并检查控制台日志。您将能够在日志中看到已单击的子记录的父记录。

实现有点棘手。我们需要在组件代码中遍历DOM。幸运的是,银栅为我们提供了访问它的机会。

  1. params获取子网格的包装HTML节点--在这里的代码中,我将它作为gridOptionsWrapper.layoutElements数组的第6个元素。
  2. 获取它的第三级父元素--这是父元素的实际row。我叫row-id
  3. 使用它来使用父网格的gridApi获取父网格的行。
代码语言:javascript
复制
  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是父网格的主键。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53722447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档