ag-grid 日期列 inRange 过滤器 - 如何访问测试函数中的“到”日期?

Posted

技术标签:

【中文标题】ag-grid 日期列 inRange 过滤器 - 如何访问测试函数中的“到”日期?【英文标题】:ag-grid date column inRange filter - how do I access the "to" date in the test function? 【发布时间】:2020-12-13 11:23:01 【问题描述】:

我的日期列的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 编写自定义逻辑?

【问题讨论】:

【参考方案1】:

我也有类似的问题,正在考虑使用原型覆盖来覆盖,但我找到了另一种解决方法,但它对我有用。您可以在测试函数中调用以下方法。

    gridOptions.api.getFilterModel();

这将为您提供当前列上的过滤器模型。您可以使用以下代码

    //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 Grid 的人应该更新

    return customFilterOption.test(filterText, cellValueFormatted);

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

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

【讨论】:

非常感谢!我最终使用 getFilterInstance 而不是 getFilterModel 但如果没有您的回答就不会找到它。真的很奇怪,ag-grid 让我们跳过这些箍。

以上是关于ag-grid 日期列 inRange 过滤器 - 如何访问测试函数中的“到”日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 ag-grid 日期过滤器占位符格式

为啥 ag-grid 过滤器比较器没有执行?

Ag-Grid:应用过滤器后如何保存和重新加载列

Ag-grid 隐藏过滤列

以角度将列标题过滤器保存在 ag-grid 中

初始加载后 ag-grid 刷新列过滤器