ag-Grid的过滤器可以用于格式化数字值,以下是一个示例代码:
// 定义一个过滤器
var numberFormatterFilter = function() {}
// 实现过滤器的接口方法
numberFormatterFilter.prototype.init = function(params) {
this.params = params;
}
numberFormatterFilter.prototype.getGui = function() {
return '';
}
numberFormatterFilter.prototype.doesFilterPass = function(params) {
var filterValue = Number(this.params.filterValue);
var cellValue = Number(params.value);
// 判断过滤条件
if (isNaN(filterValue)) {
return true;
} else {
return cellValue === filterValue;
}
}
numberFormatterFilter.prototype.isFilterActive = function() {
return true;
}
numberFormatterFilter.prototype.getModel = function() {
return { filterValue: '' };
}
numberFormatterFilter.prototype.setModel = function(model) {
this.params.filterValue = model.filterValue;
}
// 创建一个列定义
var columnDefs = [
{ headerName: "Number", field: "number", filter: 'agNumberColumnFilter', filterParams: { filterOptions: ['equals', 'lessThan', 'greaterThan'] } }
];
// 创建一个gridOptions对象
var gridOptions = {
columnDefs: columnDefs,
rowData: null,
onGridReady: function(params) {
// 填充rowData
var rowData = [
{ number: 1 },
{ number: 2 },
{ number: 3 },
{ number: 4 },
{ number: 5 }
];
params.api.setRowData(rowData);
}
};
// 使用ag-Grid创建一个grid
new agGrid.Grid(document.querySelector('#myGrid'), gridOptions);
在上面的示例中,我们创建了一个自定义的过滤器numberFormatterFilter
,它继承了ag-Grid过滤器的接口方法。在doesFilterPass
方法中,我们将过滤器的输入值和单元格的值转换为数字,然后根据过滤条件来判断是否通过过滤。
要使用这个自定义过滤器,我们在列定义中设置filter
属性为agNumberColumnFilter
,并指定filterParams
来指定过滤器的选项。
通过这种方式,我们可以在ag-Grid中使用自定义的过滤器来格式化数字值。