2017-02-07 4 views
0

Мне было поручено создать фильтр ИЛИ для сетки Кендо (который был реализован другой командой разработчиков, у которой с тех пор осталось). В принципе, у нас есть идентификационные номера. Мы можем использовать код (ниже) для фильтрации, либо для одной записи, либо для «содержащих» и т. Д. (Все стандартные параметры).Фильтр сетки Кендо - как использовать фильтр «ИЛИ»

Тем не менее, мы хотим, чтобы фильтр мог вставлять строку с идентификационными номерами (например, что-то вроде 123,456,789 и т. Д. - может быть сотни), и фильтр их поднимет.

В настоящее время наш код фильтра:

{ field: "id", title: "ID Number", 
           filterable: { 
            cell: { 
             template: function (args) { 
              args.element.kendoNumericTextBox({ 
               format: "#", 
               decimals: 0, 
               spinners: false 
              }); 
             } 
            } 
           } 
          }, 

ответ

0

Сортировано его, используя свой собственный фильтр, который действительно сложный и во многих разных местах. Но, если кто-то считает его полезным ...

Ниже в моем JS файл:

self.init = function() { 
     var FilterToUse = new String($("#MyFilter").val()); 
     self.filterIDs = FilterToUse !== "" ? FilterToUse.split(" ").map(Number) : []; 
    } 

    self.filterMyFilter = function() { 
     return new RSVP.Promise(function (resolve, reject) { 
      var promises = []; 
      promises.push(self.init()); 
      RSVP.all(promises) 
       .then(function (posts) { 
        var selectedIdsToFilter = self.filterIDs.join(","); 
        $("#MyGrid").data("kendoGrid").dataSource.read({ SelectedIds: selectedIdsToFilter }); 
       }); 
     }); 
    }; 

С self.filterIDs определяется ранее:

self.filterIDs = []; 

И MyGrid быть моей сетки, и MyFilter - это поле ввода, в котором я могу просто вставлять свои идентификаторы (123 456 789 и т. Д.).

Затем мы используем модуль, и убедитесь, что мы добавим это в код, который создает эту сетку:

string selectedIds = Request.Form["SelectedIds"]; // SelectedIds comes from paste IDs 
List<long> selectedIdList = string.IsNullOrWhiteSpace(selectedIds) == false ? selectedIds.Split(',').Select(long.Parse).ToList() : null; 

И, таким образом, мы можем фильтровать по нему ...

if (selectedIdList != null) 
{ 
    where = where.And(w => selectedIdList.Contains(w.Id)); 
} 
Смежные вопросы