我有一个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(),而text是单击的复选框的值。 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();
}
我已经尽力解释了,所以我希望这不太困难。如果您对此问题有任何疑问,请告诉我。