jqgrid сохраняет фильтр при перезагрузке

Этот вопрос был так много, поэтому, пожалуйста, прости меня, спрашивая снова.

У меня есть сетка, загруженная с URL.

Я использую loadonce: правда

Я использую filtertoolbar:

$("#status").jqGrid('filterToolbar', { stringResult:true, searchOnEnter:false, autosearch: true, defaultSearch: "cn" });

У меня есть выпадающий список поиска, из которого я могу выбрать то, что я ищу. Работает отлично.

У меня есть кнопка навигации, которую я нажимаю, чтобы инициировать перезагрузку каждые 30 секунд. Работает отлично.

$("#status").jqGrid('navButtonAdd','#statuspager', { caption: '', buttonicon: 'ui-icon-play', onClickButton: function ()
{
stint = setInterval (function() {
      postfilt = $("#status").jqGrid('getGridParam', 'postData').filter;

      $("#status").jqGrid('setGridParam',{
             url: './ar_status.cgi?systemtype=' + systype,
             datatype: "json",
             postData: postfilt,
             search: true,
             loadtext: "Refreshing grid...",
             loadonce: true,
             loadui: "block"
      });
      $("#status").jqGrid().trigger("reloadGrid");
}, 30000);
},
title: 'Start Auto Refresh (every 30 sec.)'
});

С помощью Google Chrome я вижу, что указанные фильтры были отправлены на сервер:

systemtype:production
_search:true
nd:1358887757603
rows:1000
page:1
sidx:system
sord:asc
totalrows:700
filters:{"groupOp":"AND","rules":[{"field":"system","op":"eq","data":"ATTDA02"}]}

Я могу изменить фильтр между перезагрузками и увидеть новые, даже несколько фильтров:

systemtype:production
_search:true
nd:1358887847592
rows:1000
page:1
sidx:system
sord:asc
totalrows:700
filters:{"groupOp":"AND","rules":[{"field":"system","op":"eq","data":"ATTDA02"},{"field":"dow","op":"cn","data":"MO"}]}

Я использую несколько поиска: истина при начальной загрузке. Я уверен, что это сохраняется при перезагрузке

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

Я перепробовал много примеров, размещенных здесь на SO. Я попытался добавить [{current: true}] к вызову reloadGrid - без разницы. Я не могу сохранить и применить фильтры для перезагрузки.

Я хотел бы, чтобы перезагрузка всегда возвращала полный набор данных с сервера (что происходит нормально) и позволяла текущим настройкам фильтра контролировать то, что отображается после перезагрузки. Я не хочу использовать postdata для создания нового оператора SQL select - фильтрации на стороне сервера, потому что в любое время пользователь может захотеть нажать кнопку паузы, выбрать новый фильтр и просмотреть что-то еще из всего набора данных без повторной загрузки.

$("#status").jqGrid('navButtonAdd','#statuspager', { caption: '', buttonicon: 'ui-icon-pause', onClickButton: function ()
{
   clearInterval(stint);
},
title: 'End Auto Refresh'
});

Как это можно сделать без использования куки, как я видел в одном посте?

Я мог бы попробовать использовать jqGridExport для postfilt var, а затем jqGridImport для него, но надеялся на более прямой подход. Я даже не уверен, что это поможет, так как у меня уже есть все, что мне нужно, прямо здесь, в сетке через postData.

Как примечание, в моем setGridParam выше, текст загрузки, который я указываю, никогда не отображается. Вместо этого по умолчанию отображается «Загрузка ...». Все остальные параметры работают.

Большое спасибо заранее, Майк

Решение. Полный loadComplete для сохранения фильтров, индекса сортировки и порядка сортировки после перезагрузки [json] с сервера:

                    loadComplete: function() {
                            var $this = $(this);
                            postfilt = $this.jqGrid('getGridParam','postData').filters;
                            postsord = $this.jqGrid('getGridParam','postData').sord;
                            postsort = $this.jqGrid('getGridParam','postData').sidx;

                            if ($this.jqGrid("getGridParam", "datatype") === "json") {
                                    setTimeout(function () {
                                            $this.jqGrid("setGridParam", {
                                                    datatype: "local",
                                                    postData: {filters: postfilt, sord: postsord, sidx: postsort},
                                                    search: true
                                            });

                                            $this.trigger("reloadGrid");
                                    }, 50);
                            }
                    }

Ответы на вопрос(2)

Ваш ответ на вопрос