范围中的 ag-grid 日期列如何在测试函数中访问"to"日期?



我的日期列的columnDef包括此filterOption:

{
displayKey: 'inRange',
displayName: 'In range',
test: function(filterValue, cellValue) {
...
}
},

当我运行时,filterValue只是过滤器的"开始"日期。如何访问test中筛选器的截止日期?

我试过了:

{
displayKey: 'inRange',
displayName: 'In range',
test: function(filterValue1, filterValue2, cellValue) {
...
}
},

但这只是将单元格值放入filterValue2中,而cellValue是未定义的。

如何获取"到"日期,以便为inRange编写自定义逻辑?

我也遇到了类似的问题,想用原型重写来重写,但我找到了另一种方法,这是一种变通方法,但对我来说很有效。你可以在测试函数中调用下面的方法。

gridOptions.api.getFilterModel();

这将获得当前列的filtermodel。您可以使用以下代码

//getFilterModel() will give you filter JSON object
var customfilterModel = gridOptions.api.getFilterModel(); 
var columnName = Object.keys(customfilterModel)[0];
var customDateFilter = customfilterModel[columnName];

customDateFilter变量将是包含以下属性的对象

{
dateFrom: "2020-06-30" //the date which you selected in AGGridDateFilter Popup
dateTo: "2020-08-27" //the date which you selected in AGGridDateFilter Popup
filterType: "date"
type: "inRange"
}

现在,由于您同时具有dateFromdateTo属性,所以我想您知道要对它们做什么了。

我认为AG网格人员应该更新

return customFilterOption.test(filterText, cellValueFormatted);

上面的语句返回dateFromdateTo,就像我下面提到的那样,这样开发人员就可以自定义自定义/复杂日期的行为。

return customFilterOption.test(filterText, cellValueFormatted ,filterValueTo);

我也遇到过类似的问题。但使用"谓词"而不是"测试"解决了问题。谓词函数采用值数组,具体取决于定义的"输入数"。https://ag-grid.com/javascript-data-grid/filter-provided-simple/#reference-IFilterOptionDef谓词用法如下:

{
displayKey: 'inRange', displayName: 'In Range', numberOfInputs: 2, predicate: ([fv1, fv2], cellValue) => {
var cellDate = new Date(cellValue);
return (fv1 < cellDate && fv2 > cellDate);
}
}

最新更新