2017-08-23 1 views
0

voudrais faire un filtrage dans la grille kendo dans la même colonne pour obtenir une union de valeurs provenant d'un champ multiselect:Filtrage d'une seule colonne avec opérateur OR

$('#btnSearchRoles').click(function (e) { 
     e.preventDefault(); 

     //process searched roles 
     var multiselect = $("#RoleSubroleId").data("kendoMultiSelect"); 
     // get data items for the selected options. 
     var dataItem = multiselect.dataItems(); 
     var filterCode = "["; 
     for (var i = 0; i < dataItem.length; i++) { 
      filterCode += "{ field: 'RolesAsString', operator: 'contains', value: '" + dataItem[i].Name + "'}," 
     } 
     filterCode += "]"; 

     //start filtering 
     var dataSource = $("#grid").data('kendoGrid').dataSource; 
     dataSource.filter({ 
      logic: "or", 
      filters: filterCode 
     }); 
    }); 

Même si filterCode obtient peuplé correctement les filtres ne n'atteint pas le paramètre DataSourceRequest request. enter image description here

Répondre

0

I utilisé la méthode de poussée pour les tableaux JS pour remplacer la composition de chaîne du filtre:

$('#btnSearchRoles').click(function (e) { 
     e.preventDefault(); 

     //process searched roles 
     var multiselect = $("#RoleSubroleId").data("kendoMultiSelect"); 
     // get data items for the selected options. 
     var dataItem = multiselect.dataItems(); 
     var setFilter = { logic: "or", filters: [] }; 
     for (var i = 0; i < dataItem.length; i++) { 
      setFilter.filters.push({ field: "RolesAsString", operator: "contains", value: dataItem[i].Name }); 
     } 

     //start filtering 
     var dataSource = $("#grid").data('kendoGrid').dataSource;   
     dataSource.filter(setFilter); 
    });