在ag-grid的列上使用具有多个条件的过滤器

时间:2018-12-05 11:33:22

标签: angular ag-grid ag-grid-angular

我有一个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();

}

我已经尽力解释了,所以我希望这不太困难。如果您对此问题有任何疑问,请告诉我。

0 个答案:

没有答案