Telerik MVC Extension Grid: Как заставить фильтр работать на JavaScript? - PullRequest
1 голос
/ 24 марта 2012

Пытался исследовать это как мог, но не смог найти простой пример.У меня есть проект ASP MVC 3 с Telerik Grid.Некоторые столбцы сетки скрыты из-за нехватки места.Существует отдельный элемент пользовательского интерфейса, который должен позволить пользователю выбирать значения фильтра для всех столбцов, видимых или скрытых.Я знаю, что должен быть способ управления отфильтрованным содержимым сетки снаружи просмотра на стороне клиента - эта страница справки telerik состояния:

filterBy:

Возвращает текущее выражение фильтра сетки.Начальное значение "" (пустая строка).Проверьте метод JavaScript фильтра для дополнительной ссылки.

Но я не могу найти дополнительную ссылку.Из того, что я могу почерпнуть из Интернета, я должен сделать что-то вроде этого:

var grid = $("#Grid").data("tGrid");

grid.filter("OrderID~eq~10248");

Но при попытке выполнения я получаю следующую ошибку JavaScript:

grid.filterBy isне функция

Что я делаю не так?И кто-то может указать мне на детали метода filterBy?

РЕДАКТИРОВАТЬ:

Я изменил свой код на:

$("#btnFilter").click(function (e) {
    var grid = $("#Grid").data("tGrid");
    grid.filter("Off_Plan~eq~'No Funds'");
});

Все еще получаю такую ​​же ошибку: grid.filter не является функцией

Очевидно, я новичок в Telerik.Похоже, я пропустил некоторые файлы телепрограммы Javascript ...?Я начал этот проект Visual Studio как новое приложение Telerik MVC.Там есть регистратор скриптов, и я добавил его в _Layout.cshtml.Стон ...

1 Ответ

4 голосов
/ 24 марта 2012

Я думаю, вы смешиваете две вещи.

В сетке есть свойство с именем filterBy, которое получает действительный фильтр.
И в сетке есть метод , называемый filter, который фильтрует сетку на основе заданного выражения фильтра.

Вот код:

var grid = $("#Grid").data("tGrid");

var currentFilter = grid.filterBy; //it will be ""

grid.filter("OrderID~eq~10248"); // filtering the grid with OrderID equals 10248

currentFilter = grid.filterBy // now it will return "OrderID~eq~10248"

Так вот почему grid.filterBy("OrderID~eq~10248"); как метод не работает.

EDIT:

Фильтрация на стороне клиента работает, только если вы включили фильтрацию для сетки (см. Также документ в Важное замечание )

@(Html.Telerik().Grid(Model)
    .Name("Grid")
    .Filterable())
...