我在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);
}
}
有人请告诉我如何纠正我的错误,以便在控制台窗口中获取所选行的数据/值...
答案 0 :(得分:18)
在模板上,例如:
=IIF(
Fields!Group.Value="C",
Fields!SubGroup.Value,
Fields!Group.Value
)
然后在组件类:
(rowClicked)='onRowClicked($event)'
(cellClicked)='onCellClicked($event)'
(selectionChanged) = 'onSelectionChanged($event)'
使用Chrome控制台检查事件对象内容。
答案 1 :(得分:2)
你可以使用api.getSelectedRows()返回一个选定行数据的数组。
public getSelectedRows(){
let rowsSelection = this.gridOptions.api.getSelectedRows();
console.info(rowsSelection);
}
这对我有用。
答案 2 :(得分:2)
在您的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
事件。
答案 3 :(得分:1)
如果您使用的是onSelectionChanged()
,则可以使用onSelectionChanged
从api.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)
}
答案 4 :(得分:1)
首先,必须通过将gridOptions.rowSelection
设置为"single"
或"mulitple"
来启用行选择,这取决于您要实现的选择行为。
然后,您可以使用网格API方法getSelectedNodes()
返回ag-Grid中所有当前选定行的列表。从每个节点提取数据就像在每个节点上映射并返回其data属性一样简单。
以下是使用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示例中看到这一点:
Vanilla JS
注意:使用Vanilla JS时,可以从gridOptions对象访问gridApi和columnApi。
阅读我们blog上的完整文章,或查看我们的documentation,了解可以使用ag-Grid实施的多种方案。
Ahmed Gadir |开发人员@ ag-Grid
答案 5 :(得分:0)
onRowSelected: params => {
const selectedRows = params.api.getSelectedRows();
console.log(selectedRows);
}