jqGrid Принудительный триггер фильтра

У меня jqGrid 4.1.2, и я пытаюсь принудительно запускать фильтры в $ (document) .ready (

Я хочу добиться того, чтобы заполнить одно из полей фильтрации значениями и «нажать ввод», чтобы jqGrid отфильтровал его.

Я передал значения на страницу с помощью GET, распространил значение поля фильтра следующим образом:

         var filteritem = document.getElementById("gs_fieldToBeFilteredID");
         filteritem.value = "MY filter value";

Это приводит к тому, что поле фильтра заполняется «Моим значением фильтра». Но теперь я пытаюсь вызвать "Enter Press" в конце документа вот так:

$(document).ready(function () {

     $("#myGrid")[0].triggerToolbar();
}
);

Я тоже пробовал

 jQuery("#myGrid").jqGrid("filterToolbar");

без эффекта. Я также поместил приведенный выше код в событие jQGrid loadComplete без эффекта. Фильтр заполнен, но я "не могу" заставить его запустить фильтрацию ... есть идеи ?!

Буду признателен за любую помощь. С наилучшими пожеланиями


person aspenX    schedule 24.08.2011    source источник
comment
Я обнаружил, что добавление некоторых задержек приводит к тому, что это работает нормально: var xxx = jQuery (# list2 _ ‹% = this.ClientID%›); оповещение (ЗАДЕРЖКА); xxx.jqGrid (filterToolbar); $ (# list2 _ ‹% = this.ClientID%›) [0] .triggerToolbar (); но добавление задержки это не вариант   -  person aspenX    schedule 24.08.2011


Ответы (2)


Мне кажется, что старая демонстрация от ответ - это то, что вам нужно.

После того, как вы установите value в элементе <input>, вы можете запустить фильтр change, а затем использовать

$(filteritem).focus().trigger({ type : 'keypress', charCode : 13 });

В зависимости от того, где вы запускаете событие keypress, вам может потребоваться сделать это в отдельном потоке. Так что, возможно, вам нужно будет сделать это в setTimeout, как я сделал это в демонстрации.

person Oleg    schedule 24.08.2011

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

Вот полная статья: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:post_data_module

Я сделал это с помощью события «перед запросом», настроив функцию, которая добавляет нужные вам данные.

function jqGridBeforeRequest()
{
   $(this).appendPostData(<JSON/object data here>);
}
person daanl    schedule 24.08.2011