我有一个 ag-grid 表,其中包含三列 - 请求 ID、请求状态和提交日期。我在请求 ID 列上使用基于文本的过滤器,在提交日期上使用日期范围过滤器。在请求状态中,我有 4 个请求状态 - 草稿、已提交、已发送、发送失败。在 HTML 中,我使用了一个下拉菜单,其中包含每个状态的复选框 我尝试创建一个过滤器,允许我为请求状态过滤器选择多个条件 - 例如,我想查看具有请求状态的数据作为草稿或提交。这是我的过滤器代码:
change(event, text: string) {
var index = this.ReqStatusFilter.indexOf(text);
if(index == -1) {
this.ReqStatusFilter.push(text);
} else {
this.ReqStatusFilter.splice(index, 1);
}
var finalArray = [];
var k = 0;
for(var i = 0; i < this.rowData.length; i++) {
for(var j = 0; j < this.ReqStatusFilter.length; j++) {
if(this.rowData[i].requeststatus == this.ReqStatusFilter[j]) {
finalArray[k++] = this.rowData[i];
}
}
}
if(k != 0) {
this.gridApi.setRowData(finalArray);
} else {
this.gridApi.setRowData(this.rowData)
}
this.gridApi.onFilterChanged();
}
我正在使用 ReqStatusFilter 数组来跟踪当前选择了哪些状态。每次单击复选框时都会调用 change() ,文本是单击的复选框的值。rowData 数组包含我的网格的数据。
我面临的问题是提交日期的日期过滤器和此请求 ID 过滤器彼此独立工作。如果我选择一个日期范围,其中只有提交和发送请求状态的消息可用,然后我单击请求状态过滤器中草稿的复选框,也会出现状态草稿的消息。该过滤器与基于请求 ID 的基于文本的过滤器一起工作正常。假设我搜索状态为草稿的请求 ID,然后为请求状态选择已提交和已发送选项,则不会出现任何内容。基本上,过滤器应该充当彼此之间的 AND,但其内部的请求状态过滤器应该充当所有选定条件的 OR。我该如何解决这个问题,以便日期和请求状态过滤器可以一起工作?也发布日期过滤器的代码:
submissionDateFilter() {
var dateFilterComponent = this.gridApi.getFilterInstance("submissiondate");
dateFilterComponent.setModel({
type:"inRange",
dateFrom: this.fromDate.year + '-' + this.fromDate.month + '-' + this.fromDate.day,
dateTo: this.toDate.year + '-' + this.toDate.month + '-' + this.toDate.day
})
this.gridApi.onFilterChanged();
}
我已经尽力解释了,所以我希望它不会太难。如果您对这个问题有任何疑问,请告诉我。