13

我在angular2中设置了ag-grid,它工作正常,但我无法获得所选行的值......我的控制台窗口中没有错误......这就是我初始化网格的方式......

import {Component} from 'angular2/core';


@Component({
selector: 'aggride',
template: `

<div class="tr-card" >
<ag-grid-ng2  #agGrid of mgrid   class="ag-fresh"   rowHeight="40px"    
               [columnDefs]="columnDefs" 
                [rowData] = "rowData"
     enableCellExpressions="true"  
 enableSorting="true"  
  unSortIcon="true"
rowSelection="single"
(getSelectedRows) = "getSelectedRows()"
(onSelectionChanged) = "onSelectionChanged()"
>
</ag-grid-ng2>
</div>
`,
directives: [(<any>window).ag.grid.AgGridNg2],
})

这是我在类中获取所选值的代码

export class AgGride {
gridOptions = {
    columnDefs: 'columnDefs',
    rowData: 'rowData',
    rowSelection: 'single',
    getSelectedRows: 'getSelectedRows',
    onSelectionChanged: 'onSelectionChanged'
};

columnDefs = [
    { headerName: "Make", field: "make", editable: true },
    { headerName: "Model", field: "model", editable: true },
    { headerName: "Color", field: "Color", editable: true }
];

rowData = [
    { make: "Toyota", model: "Celica", Color: "Red"},
    { make: "Ford", model: "Mondeo", Color: "Blue"},
    { make: "Tata", model: "X100", Color: "Blue"},
    { make: "Volvo", model: "X5", Color: "White"},      
];

mgrid: any;
onSelectionChanged() {
    var selectedRows = this.mgrid.ag.this.gridOptions.getSelectedRows();
    console.log(selectedRows);


}
}

有人请告诉我如何纠正我的错误,以便我在控制台窗口中获取所选行的数据/值...

4

6 回答 6

29

在模板上,例如:

(rowClicked)='onRowClicked($event)'
(cellClicked)='onCellClicked($event)'
(selectionChanged) = 'onSelectionChanged($event)'

然后在组件类上:

onRowClicked(event: any) { console.log('row', event); }
onCellClicked(event: any) { console.log('cell', event); }
onSelectionChanged(event: any) { console.log("selection", event); }

使用 Chrome 控制台检查事件对象内容。

于 2016-02-09T15:25:01.607 回答
6

您可以使用返回所选行数据数组的 api.getSelectedRows()。

 public getSelectedRows(){
        let rowsSelection = this.gridOptions.api.getSelectedRows();
        console.info(rowsSelection);
      }

这对我有用。

于 2017-10-23T14:09:50.610 回答
4

在您的 HTML 将rowClicked事件绑定到您自己的函数,如下所示。

 <ag-grid-angular #grid
      style="width: 100%; height: 500px;" class="ag-theme-balham"
      [rowData]="rowList" [columnDefs]="columnsList" [rowSelection]="selectionMode"
      (rowClicked)="onRowClick($event)"
    >
    </ag-grid-angular>

然后在您的 TS 或您的 JS 中使用 api,如下所示

onRowClick(event) {
    if (this.selectionMode === 'multiple') {
      this.selectedEntity = this.grid.api.getSelectedRows();
    } else {
      this.selectedEntity = this.grid.api.getSelectedRows()[0];
    }
}

当您的网格具有多项选择等功能时,所有选定的数据都不会与event参数一起传递。它始终只是选定的行。

我不鼓励该selectionChanged事件的原因是,它总是在rowClicked事件之前调用该selectionChanged事件。

于 2019-01-20T15:00:30.197 回答
2

如果您正在使用,您可以通过使用从函数onSelectionChanged()中获取选定的数据。onSelectionChangedapi.getSelectedRows()

selectedRow: any;
canceLDateAGGrid() {
    this.dateGridOptions = {
        columnDefs: [{
            headerName: this.Label[0].GEN_ORG_lblName,
            field: 'DependantName',
            width: 200,
            filter: 'agTextColumnFilter'
        }, ],
        showRowSelection: true,
        checkboxSelection: false,
        onSelectionChanged: (event) = > this.onSelectionChanged(event),
    };
}
onSelectionChanged(event) {
    let selectdata = event.api.getSelectedNodes();
    this.selectedRow = event.api.getSelectedRows();
    console.log(this.selectedRow)
}
于 2020-02-06T13:16:30.130 回答
2

首先,必须通过设置gridOptions.rowSelection"single"或来启用行选择"mulitple",具体取决于您要实现的选择行为。

然后,您可以使用 grid API 方法getSelectedNodes()返回 ag-Grid 中所有当前选定行的列表。从每个节点提取数据就像映射每个节点并返回其数据属性一样简单。

以下是使用 JavaScript 框架时的代码:

getSelectedRowData() {
    let selectedNodes = this.gridApi.getSelectedNodes();
    let selectedData = selectedNodes.map(node => node.data);
    alert(`Selected Nodes:\n${JSON.stringify(selectedData)}`);
    return selectedData;
}

您还可以在下面的 Angular/React/Vue.js 示例中看到这一点:

反应

Vue.js

Vanilla JS
注意:使用 Vanilla JS 时,gridApi 和 columnApi 可以从 gridOptions 对象中访问。

阅读我们博客上的完整文章或查看我们的文档,了解您可以使用 ag-Grid 实现的各种场景。

艾哈迈德·加迪尔 | 开发者@ag-Grid

于 2020-06-04T09:22:01.317 回答
0
onRowSelected: params => {
  const selectedRows = params.api.getSelectedRows();
  console.log(selectedRows);
}
于 2018-10-18T12:53:42.960 回答