【问题标题】:How to getSelectedRows on ngClick in agGrid-angularJs?如何在agGrid-angularJs中的ngClick上获取SelectedRows?
【发布时间】:2019-08-29 17:54:23
【问题描述】:

在 ngClick 上调用 gridOptions.api.getSelectedRows() 会返回 [],但在 gridOptions.onRowClicked 中调用它会正确返回选定的 rowData。为什么api.getSelectedRows() 在 ngClick 上返回空?如何在 ngClick 上获取选中的行?

我正在尝试在我的 angularJs 项目中使用 agGrid。当单击附加到特定行的编辑按钮时,我需要将选定的行作为要编辑/更新的表单的输入。

这是我用来调用updateRecord 的代码,然后它尝试调用getSelectedRows(但失败了)。

gridOptions.rowData = genRows(opa.fieldParams, opa.values, function (row) {
  row.verticalTailer = `<i class="far fa-edit" style="cursor: pointer;"
  ng-click="$root.$broadcast('table:updateRecord', {name: '${opa.name}'})">
  </i>`;
});

【问题讨论】:

    标签: angularjs ag-grid-angular


    【解决方案1】:

    您可以使用 ag-grid api 并使用它。他们提供了一个内置函数来从网格中获取选定的行。

    要实现这一点,首先,您必须在您的范围内注册 ag-grid 的 api。

     $scope.gridOptions.onRegisterApi = function(gridApi){
          $scope.gridApi = gridApi;
        }; 
    

    然后您可以在 ngClick 上使用您的 $scope.gridApi,如下所示,其中 getSelectedRows() 将在 ngClick 上调用。

    $scope.getSelectedRows= function(){
        $scope.selectedRows= $scope.gridApi.selection.getSelectedRows();
    }
    

    【讨论】:

    • 感谢您的快速回复。我以前从来不知道/尝试注册gridApi。我试过api.selection,到目前为止还没有成功。 agGrid 文档显示 api.getSelectedRows() 而不是 api.selection.getSelectedRows()。会尝试更多。
    • @zipper 也许 ag grid api 的版本不同,我敢肯定,你可以从这里开始 :)
    • 我在 Google 上搜索了关键字 onRegisterApi 并获得了指向 ui-grid 而不是 ag-grid 的链接...
    【解决方案2】:

    我深入研究了 ag-grid 文档中的 ag-grid angularjs 示例 conde,发现我可以简单地使用 data(由 ag-grid 默默添加到范围)来引用模板中的当前行,所以我可以在我的模板代码中简单地将ng-click="$root.$broadcast('table:updateRecord', {name: '${opa.name}'} 更改为ng-click="$root.$broadcast('table:updateRecord', {name: '${opa.name}', data: data},无需在控制器中使用 getSelectedRows()。

    【讨论】:

      猜你喜欢
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 2016-03-25
      • 1970-01-01
      相关资源
      最近更新 更多