Angular:在 agGrid 中的动态列上设置默认排序的最佳方式
Angular: Best way to set a default sort on a dynamic column in agGrid
我正在研究 agGrid,我们没有在其中明确定义列。我一辈子都想不出如何在我的其中一个专栏上设置默认排序。在初始化时我们这样做:
public ngOnInit(): void {
this.gridOptions.defaultColDef = this.selectable ? this.getDefaultColumnsDefinition() : null;
this.showSpinner = true;
this.getAllRefreshJobs();
}
它是 getDefaultColumnsDefinition()
中我希望首先排序的列之一。我试过了
public onGridReady(params): void {
this.gridApi = params.api;
const sortModel = [
{colId: 'recordStartTime', sort: 'desc'}
];
this.gridApi.setSortModel(sortModel);
this.gridApi.sizeColumnsToFit();
}
但它不起作用。网格看起来一样。有人可以帮忙吗?
根据您所说的,您是在初始化所有内容之前调用 api。我不是 100% 确定你是如何设置的,但你应该在代码的 onGridReady
函数中进行这些调整。在 onGridReady 中,您可以执行类似的操作:
HTML
<ag-grid-angular
class="ag-theme-balham"
[rowData]="data"
[columnDefs]="columnDefs"
(gridReady)="onGridReady($event)"></ag-grid-angular>
TypeScript
onGridReady(params): void {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
const sortModel = [
{colId: 'recordStartTime', sort: 'desc'}
];
this.gridApi.setSortModel(sortModel);
}
这会公开当前的 gridApi 并允许您进行任何 post 初始化修改。
感谢@Jon Black 让我开始!
在我得知 setSortModel
已被弃用后,这对我有用:
function sortGrid(event, field, sortDir) {
const columnState = { // https://www.ag-grid.com/javascript-grid-column-state/#column-state-interface
state: [
{
colId: field,
sort: sortDir
}
]
}
event.columnApi.applyColumnState(columnState);
}
与
this.gridOptions = {
defaultColDef: {
sortable: true // enable sorting on all columns by default https://www.ag-grid.com/javascript-grid-sorting/
},
columnDefs,
onGridReady: function (event) {
console.log('The grid is now ready', event);
sortGrid(event, 'timestamp', 'asc')
},
}
我正在研究 agGrid,我们没有在其中明确定义列。我一辈子都想不出如何在我的其中一个专栏上设置默认排序。在初始化时我们这样做:
public ngOnInit(): void {
this.gridOptions.defaultColDef = this.selectable ? this.getDefaultColumnsDefinition() : null;
this.showSpinner = true;
this.getAllRefreshJobs();
}
它是 getDefaultColumnsDefinition()
中我希望首先排序的列之一。我试过了
public onGridReady(params): void {
this.gridApi = params.api;
const sortModel = [
{colId: 'recordStartTime', sort: 'desc'}
];
this.gridApi.setSortModel(sortModel);
this.gridApi.sizeColumnsToFit();
}
但它不起作用。网格看起来一样。有人可以帮忙吗?
根据您所说的,您是在初始化所有内容之前调用 api。我不是 100% 确定你是如何设置的,但你应该在代码的 onGridReady
函数中进行这些调整。在 onGridReady 中,您可以执行类似的操作:
HTML
<ag-grid-angular
class="ag-theme-balham"
[rowData]="data"
[columnDefs]="columnDefs"
(gridReady)="onGridReady($event)"></ag-grid-angular>
TypeScript
onGridReady(params): void {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
const sortModel = [
{colId: 'recordStartTime', sort: 'desc'}
];
this.gridApi.setSortModel(sortModel);
}
这会公开当前的 gridApi 并允许您进行任何 post 初始化修改。
感谢@Jon Black 让我开始!
在我得知 setSortModel
已被弃用后,这对我有用:
function sortGrid(event, field, sortDir) {
const columnState = { // https://www.ag-grid.com/javascript-grid-column-state/#column-state-interface
state: [
{
colId: field,
sort: sortDir
}
]
}
event.columnApi.applyColumnState(columnState);
}
与
this.gridOptions = {
defaultColDef: {
sortable: true // enable sorting on all columns by default https://www.ag-grid.com/javascript-grid-sorting/
},
columnDefs,
onGridReady: function (event) {
console.log('The grid is now ready', event);
sortGrid(event, 'timestamp', 'asc')
},
}