如何使用 ag-grid 显示行序号
How to show row ordinal number w/ ag-grid
正在尝试使用 ag-grid 库显示行的索引 ("ordinal number")。
如果您从上到下计数(基于从拖放重新排序或已应用的任何排序),我的序数只是指行号。
即根据随附的屏幕截图,我希望在将 "Porche" 拖到顶部后看到 Porche 的 Index=0、Toyota=1 和 Ford=2 (c.f. 'before') .但是它们的索引似乎不会在重新排序时重新计算。
这是我尝试过的方法(参见 _getIndexValue
):
import { Grid, GridOptions, ColDef } from "ag-grid/main";
import { ValueGetterParams } from "ag-grid/dist/lib/entities/colDef";
// for ag-grid-enterprise users only
import 'ag-grid-enterprise/main';
import "ag-grid/dist/styles/ag-grid.css";
import "ag-grid/dist/styles/ag-theme-balham.css";
class SimpleGrid {
_getIdValue(args: ValueGetterParams): any {
return args.node.id;
}
_getIndexValue(args: ValueGetterParams): any {
return args.node.rowIndex;
}
private gridOptions: GridOptions = <GridOptions>{};
constructor() {
this.gridOptions = {
columnDefs: this.createColumnDefs(),
rowData: this.createRowData(),
rowDragManaged: true,
};
let eGridDiv:HTMLElement = <HTMLElement>document.getElementById('myGrid');
new Grid(eGridDiv, this.gridOptions);
}
// specify the columns
private createColumnDefs(): ColDef[] {
return [
{headerName: "Index", valueGetter: (args) => this._getIndexValue(args), rowDrag: true},
{headerName: "ID", valueGetter: (args) => this._getIdValue(args)},
{headerName: "Make", field: "make"},
{headerName: "Model", field: "model"},
{headerName: "Price", field: "price"}
];
}
// specify the data
private createRowData() {
return [
{make: "Toyota", model: "Celica", price: 35000},
{make: "Ford", model: "Mondeo", price: 32000},
{make: "Porsche", model: "Boxter", price: 72000}
];
}
}
window.addEventListener("load", () => {
new SimpleGrid();
});
我希望有比订阅 dragEnd 事件和强制更新索引更好的方法。
如果如果您订阅了 RowDragEnd
事件并调用 api.refreshCells()
,该实施(如我最初发布的那样)有效。从性能的角度来看,这可能并不理想,但就我的目的而言,这无关紧要。
正在尝试使用 ag-grid 库显示行的索引 ("ordinal number")。
如果您从上到下计数(基于从拖放重新排序或已应用的任何排序),我的序数只是指行号。
即根据随附的屏幕截图,我希望在将 "Porche" 拖到顶部后看到 Porche 的 Index=0、Toyota=1 和 Ford=2 (c.f. 'before') .但是它们的索引似乎不会在重新排序时重新计算。
这是我尝试过的方法(参见 _getIndexValue
):
import { Grid, GridOptions, ColDef } from "ag-grid/main";
import { ValueGetterParams } from "ag-grid/dist/lib/entities/colDef";
// for ag-grid-enterprise users only
import 'ag-grid-enterprise/main';
import "ag-grid/dist/styles/ag-grid.css";
import "ag-grid/dist/styles/ag-theme-balham.css";
class SimpleGrid {
_getIdValue(args: ValueGetterParams): any {
return args.node.id;
}
_getIndexValue(args: ValueGetterParams): any {
return args.node.rowIndex;
}
private gridOptions: GridOptions = <GridOptions>{};
constructor() {
this.gridOptions = {
columnDefs: this.createColumnDefs(),
rowData: this.createRowData(),
rowDragManaged: true,
};
let eGridDiv:HTMLElement = <HTMLElement>document.getElementById('myGrid');
new Grid(eGridDiv, this.gridOptions);
}
// specify the columns
private createColumnDefs(): ColDef[] {
return [
{headerName: "Index", valueGetter: (args) => this._getIndexValue(args), rowDrag: true},
{headerName: "ID", valueGetter: (args) => this._getIdValue(args)},
{headerName: "Make", field: "make"},
{headerName: "Model", field: "model"},
{headerName: "Price", field: "price"}
];
}
// specify the data
private createRowData() {
return [
{make: "Toyota", model: "Celica", price: 35000},
{make: "Ford", model: "Mondeo", price: 32000},
{make: "Porsche", model: "Boxter", price: 72000}
];
}
}
window.addEventListener("load", () => {
new SimpleGrid();
});
我希望有比订阅 dragEnd 事件和强制更新索引更好的方法。
如果如果您订阅了 RowDragEnd
事件并调用 api.refreshCells()
,该实施(如我最初发布的那样)有效。从性能的角度来看,这可能并不理想,但就我的目的而言,这无关紧要。