2012-01-31 1 views
1

Я использую сетку Telerik MVC и вам необходимо применить правила фильтрации ниже, но, похоже, это применимо только к первым двум столбцам и игнорирует все остальные столбцы.Применение правил в сетчатом фильтре Telerik MVC

Здесь JS код: (предположим, что сетка является $ ("# сетка") данных ("TGrid").)

function extTelerikGridFilter(grid, value) { 
    if (!$.isArray(grid.columns)) throw "Error : First Parameter accept only array."; 

    var colLength = grid.columns.length - 1; 
    var filterText = ""; 

    var tempArr = new Array(); 
    for (var i = 0; i < grid.columns.length; i++) { 
     filterText = filterText + "substringof({0},'{1}')".replace("{0}", grid.columns[i].member).replace("{1}", value); 
     if (colLength > 0) { 
      filterText = filterText + "~or~"; 
      colLength = colLength - 1; 
     } 
    } 
    console.log(filterText); 
    grid.filter(filterText); 
} 

Результат console.log (filterText): substringof (Doc_No» Opriyandi ') ~ или ~ substringof (Тип,' Opriyandi ') ~ или ~ substringof (Request_By,' Opriyandi ') ~ или ~ substringof (Request_Date,' Opriyandi ') ~ или ~ substringof (Department,' Opriyandi ') ~ или ~ substringof (Plant, 'Opriyandi') ~ или ~ substringof (Описание, 'Opriyandi') ~ или ~ substringof (IT_Support, 'Opriyandi') ~ или ~ substringof (Статус, 'Opriyandi')

Посмотрите до и после применение фильтров в приложении.

Это какая-то ошибка или, возможно, я сделал что-то неправильно .. Спасибо.

* Использование Telerik MVC 2011.3.1229
* Пожалуйста, спросите меня, нужна ли вам дополнительная информация о моей проблеме. :)

Вложение:
- BeforeApplyingFilter.png
- AfterApplyingFilter

ответ

1

У меня была эта проблема тоже. После некоторых экспериментов я обнаружил, что мы должны скопировать каждое выражение, начиная с головы.

Итак, ваша строка фильтра будет выглядеть следующим образом:

(((((((((substringof(Doc_No,'Opriyandi'))~or~substringof(Type,'Opriyandi'))~or~substringof(Request_By,'Opriyandi'))~or~substringof(Request_Date,'Opriyandi'))~or~substringof(Department,'Opriyandi'))~or~substringof(Plant,'Opriyandi'))~or~substringof(Description,'Opriyandi'))~or~substringof(IT_Support,'Opriyandi'))~or~substringof(Status,'Opriyandi')) 


Вы можете изменить свой код:

.. 
    for (var i = 0; i < grid.columns.length; i++) { 
     --> filterText = "(" + filterText + "substringof({0},'{1}')".replace("{0}", grid.columns[i].member).replace("{1}", value) + ")"; <-- 
     if (colLength > 0) { 
      filterText = filterText + "~or~"; 
      colLength = colLength - 1; 
     } 
.. 

PS Я использую 2011.3.1306

PS2 Я написал статью о пользовательской фильтрации - см. link.

Смежные вопросы