为了保存用户工作,我在sessionstorage中保存了几个列过滤器。最近,添加了企业设置过滤器,它几乎可以正常工作。 唯一的问题是,当我使用api中的setFilterModel()将空列添加回过滤器时,不会占用空列。
我做了以下事情:
用户添加一个新的“设置过滤器”并选择(空白)作为值。过滤器已更改,并且触发了(filterChanged)事件。我使用api.getFilterModel()从api获取当前过滤器,并使用session.age中的JSON.stringify(currentFilter)将结果保存为JSON字符串。
getFilter() {
const currentFilter = this.gridOptions.api.getFilterModel();
if (Object.keys(currentFilter).length !== 0) {
sessionStorage.setItem('filterKey', JSON.stringify(currentFilter));
}
}
如果用户再次打开页面,则应再次接管过滤器。
setFilter() {
const currentFilter = sessionStorage.getItem('filterKey');
if (currentFilter) {
const filter = JSON.parse(currentFilter);
this.gridOptions.api.setFilterModel(filter);
this.gridOptions.api.onFilterChanged();
}
}
(rowDataChanged)事件调用了此方法。
这可以处理文本,日期,数字和设置的过滤器,但空白值除外。 如果选择空白值,我将得到以下模型:
{
"column" : "nameOfColumn": {
"filterType": "set",
"values": [null]
}
}
但是如果我应用过滤器,则绑定到null无效。我知道JSON.parse不会将null添加到数组中,因此我尝试手动添加null以得到相同的结果。
如何在设置的过滤器中保存和应用空值?
谢谢!