Кажется, здесь было несколько вопросов относительно этой темы, и у них есть отличные ответы, но, похоже, мой случай немного отличается. Мне нужно отфильтровать записи, отображаемые в jqGrid, но полностью на стороне клиента.jqGrid Фильтрация записей
По ряду причин лучший способ заполнить мою сетку - это массив, который испускается непосредственно в JavaScript на странице. Сама сетка вообще не взаимодействует с сервером. У меня есть какой-то пользовательский AJAX, происходящий в различных сетевых событиях, но это все. (В принципе, я интегрирую это с существующим набором доступных сервисов, которые не могут существенно измениться.)
Что я хочу сделать, это фильтровать сетку на основе простого ввода текста и кнопки. На моей странице есть текстовый ввод, кнопка и таблица (которая становится сеткой на готовом документе). Я хотел бы привязываться к событию клика кнопки (нормальное привязку события jQuery, ничего особенного) и использовать значение из текстового ввода в качестве фильтра отображения на jqGrid.
Под «фильтром» я имею в виду отображение только записей, содержащих совпадение (в любом поле) для текста на входе. Затем, чтобы отобразить все записи, просто опустите вход и снова нажмите кнопку. Кроме того, сетка является мультиселектором, и выбор должен сохраняться с помощью фильтрации. Мне просто нужно скрыть строки, которые не соответствуют тому, что находится во входе.
Возможно ли это?
Это выглядит великолепно, спасибо! Для меня случаются несколько странных вещей. 1: В IE 8 (единственный целевой браузер моего проекта, клиентские заказы) в моей клиентской среде он говорит, что 'JSON' не определен. Но это не говорит об этом на вашем демо в том же браузере. 2: В демонстрационной настройке вы не сохраняете выбор строк между фильтрацией. Строки, которые выбраны, скрыты, затем не скрыты, больше не выбраны. Однако, при реализации этого, у меня возникла идея, которая может работать проще и более изначально с помощью jqGrid ... – David
Что делать, если вместо фильтрации основной сетки вместо этого функция фильтра выводит модальный диалог jQuery UI (простой), который имеет собственной сетке, которая отображает отфильтрованные записи (могу ли я легко заполнить «grid2» фильтрованным набором данных из «grid1»? Я предполагаю, что худшим случаем является копирование массива и фильтрация в цикле с простым JS перед установкой его как данных для ' grid2'). Затем пользователь выбирает то, что хочет, и закрывает модальный диалог. При закрытии я получаю выбранные идентификаторы из 'grid2' (простой) и устанавливаю их как выбранные в' grid1' (легко, демонстрация находится на сайте jqGrid). И, конечно же, очистить 'grid2'. Мысли? – David
@David: У вас ошибка '' JSON 'undefined ', потому что вы не включили [json2.js] (https://github.com/douglascrockford/JSON-js). IE8 также имеет встроенную поддержку класса 'JSON', если установлено обновление [976662] (http://support.microsoft.com/kb/976662).Я рекомендую вам всегда включать json2.js, чтобы убедиться, что 'JSON.stringify' работает. – Oleg