如何通过单击ag-grid中的列标题来获取列标题的名称,实际上我想在单击列标题时执行服务器端排序和过滤,为此,我需要有关事件的专栏。
HTML模板
<ag-grid-angular [gridOptions]="gridOptions" style="width: 100%;
height: 650px;" (gridReady)="onGridReady($event)"
class="ag-theme-balham" [columnDefs]="columnDefs"
[rowData]="rowData">
</ag-grid-angular>
TS
rowData;
columnDefs = [
{
headerName: "name",
field: "athlete",
},
{
headerName: "Status",
field: "age"
}
];
onGridReady(params: any) {
this.service.getData().subscribe((e)=>{
this.rowData = e;
});
}
答案 0 :(得分:0)
在撰写本文时,没有任何事件可以监听ag-grid中的标题列单击。您的选择是:
答案 1 :(得分:0)
HTML:
<ag-grid-angular style="width: 500px; height: 500px"
class="ag-theme-balham"
[rowData]="tableRows"
[columnDefs]="columnDefs"
(sortChanged)="sort($event)">
</ag-grid-angular>
JS:
sort(event): void {
const fieldName = event.api.getSortModel(); // получение названия столбца
}
答案 2 :(得分:0)
没有这样的功能来监听点击了哪一列的标题。 api.getSortModel() 已弃用,排序信息现在是列状态的一部分。要收听您单击的标题,您必须从 columnApi 和 getColumnState() 函数中提取它。
它返回 col Id 和排序类型 (asc,desc,null)。每三次点击将被视为空。
所以要找到列名,你可以遍历 columnApi.getColumnState() 并且 col ID 可以与 columnDefs 映射 `
<AgGridReact
columnDefs={this.state.columnDefs}
onSortChanged={this.sortChanged}
/>
sortChanged = (val) => {
const columnSortState = val.columnApi.getColumnState();
const columns = this.state.columnDefs;
columns.map((column,i) => {
Do your code magic here
});
}
`