【问题标题】:How to make detail gridrows selectable in ag-grid如何在 ag-grid 中选择细节网格
【发布时间】:2019-06-19 19:11:10
【问题描述】:

我有一个主/明细形式的 ag-grid。我正在尝试找到一种方法使详细视图中的行可选,以便删除选定的详细信息行。

在 detailGridOptions 中,我尝试将 defaultColDef rowSelection 设置为 single。这似乎不起作用。不幸的是,在 ag-grid 的文档中,我找不到显示您可以在 defaultColDef 中定义的参考。仅针对特定用例提供了一些示例,但没有总体视图。或者我只是没能找到它。

我在组件中的网格定义:

this.columnDefs = [
      { headerName: 'ID', field: 'batchID', cellRenderer: 'agGroupCellRenderer' },
      { headerName: 'Erstelldatum', field: 'createDateString' },
      { headerName: 'Lagerort', field: 'storedAt' },
      { headerName: 'Materialnummer', field: 'matNumber' }
    ];

    this.detailCellRendererParams = {
      detailGridOptions: {
        columnDefs: [
          { headerName: "UnitID", field: 'unitID' },
          { headerName: "Eingangsdatum", field: 'entryDateString' },
          { headerName: "Ausfalldatum", field: 'failureDateString' }
        ],
        defaultColDef: {
          rowSelection: 'single',
          filter: true
        },
        onFirstDataRendered(params) {
          params.api.sizeColumnsToFit();
        }
      },
      getDetailRowData: function (params) {
        params.successCallback(params.data.units)
      }
    }

还有html:

 <div class="row mt-3">
        <div class="col">
            <ag-grid-angular class="ag-theme-balham" style="width: 100%; height: 750px;" [rowData]="rowData$ | async"
                [columnDefs]="columnDefs" [rowSelection]="rowSelection" [masterDetail]="true"
                [detailCellRendererParams]="detailCellRendererParams" (gridReady)="onGridReady($event)"
                (selectionChanged)="onSelectionChanged($event)">
            </ag-grid-angular>
        </div>
    </div>

我输入了 filter:true 来检查它是否有效并且确实有效。所以我猜测 rowSelection: 'single' 是错误的。我也试过 selectable: true。

这是网格的截图:

master/detail ag-grid

我希望能够选择显示在内部网格内的行。具有 UnitID 的那些。我将尝试创建一个堆栈闪电战。不过可能需要一段时间,因为我以前从未这样做过。

【问题讨论】:

  • 请您在 StackBlitz 上重现您的问题。没有足够的信息/不清楚您的问题到底是什么。
  • @Viqas 我添加了一个屏幕截图,可能会更清晰。我也会尝试做一个stackblitz。
  • 别在意堆栈闪电战。主/详细功能是企业功能。我不认为我可以把它放在一个堆栈闪电战中。但我希望屏幕截图清楚。

标签: angular ag-grid ag-grid-angular


【解决方案1】:

您需要在detailGridOptions 而不是defaultColDef 上拥有rowSelection: 'single' 属性。一旦你有了它,你就可以有一个按钮,它可以让你使用 detailGridInfo 获取当前选定的节点。

所以如果你添加一个按钮:

<button (click)="deleteSelectedRow()">Delete Selected Detail</button>

调用函数:

deleteSelectedRow() {
    this.gridApi.forEachDetailGridInfo(function(detailGridApi) {
      console.log(detailGridApi.api.getSelectedRows()[0])
    });
  }

然后,您将获得您选择的行的详细信息。

看看this 工作的plunker。

【讨论】:

  • 谢谢,这正在工作!您能否还给我一个指向文档的链接,我可以在其中找到这些东西?我无法找到此特定信息。
  • Here 是 detailGridInfo.api 的文档,here 是有关行选择的文档。
猜你喜欢
  • 1970-01-01
  • 2020-07-20
  • 2019-01-28
  • 1970-01-01
  • 2018-11-24
  • 2020-08-19
  • 2019-08-16
  • 2021-10-31
  • 1970-01-01
相关资源
最近更新 更多