Doc Holiday
Doc Holiday

Reputation: 10254

SlickGrid- Filter by multiple values in one column?

I want to filter by more than one value in the same column. Is that possible in slickgrid. I know how to do it with one value using setFilterArgs:

Filter Object:
colFilObj: {"StatusCode":"TestAll"}

var colFilObj= [];
colFilObj["StatusCode"] = "TestAll";
DataView.setFilterArgs(colFilObj);

Can the object be modified to accept multiple values and work?

Upvotes: 0

Views: 928

Answers (1)

Tom Kauffman
Tom Kauffman

Reputation: 11

I made a filter like this using a string delimiter (you can use a commma - I used a semi-colon). Then just create your custom filterand assign it: dataView.setFilter(myFilter);

So, the user would enter m;t for example, to see all items which had m or t in the item value of that column

MyFilter method:

   function myFilter(item) {
     for (var columnId in columnFilters) {
        if (columnId != undefined && columnFilters[columnId] !== "") {
             var c = grid.getColumns()[grid.getColumnIndex(columnId)];
             var multiFilters = columnFilters[columnId].split(";");
             var valid=false;
             for(var j=0; j<multiFilters.length; j++){
                 if (multiFilters[j] != undefined && multiFilters[j] != "" && item[c.field] != undefined){
                     if (("" +item[c.field]).toLowerCase().indexOf(multiFilters[j].toLowerCase()) != -1){  
                        valid = true;
                     }
                 }
             }
             if(!valid){
                 return false;
             }
         }
     }
     return true;
 }

Upvotes: 1

Related Questions