jqGrid не может установить значение фильтра при первом заряде [дубликат]

Еще нет встроенного триггера runat / cron.

На данный момент лучшим вариантом является использование внешней службы для запуска функции HTTP периодически. См. Этот пример в functions-samples repo для получения дополнительной информации.

Я также очень рекомендую прочитать это сообщение в блоге Firebase: Как планировать (Cron) Работы с Облачные функции для Firebase и этого видео: Функции временного облака для Firebase с использованием HTTP-триггера и Cron .

3
задан Mike 24 January 2013 в 22:50
поделиться

2 ответа

Я не уверен, но я полагаю, что источником вашей первой проблемы может быть смешение свойств postData.filters и postData и использования filter вместо фильтров``. Вы используете

postfilt = $("#status").jqGrid('getGridParam', 'postData').filter;

, чтобы получить свойство filter вместо filters. Вы получаете значение undefined. Поэтому настройка postData на postfilt ничего не значит.

Следующая проблема заключается в том, что ответ сервера содержит нефильтрованные данные. Чтобы принудительно фильтровать данные локально , вам необходимо перезагрузить сетку один раз после завершения загрузки с сервера. Вы можете сделать это внутри loadComplete. Именно здесь вы можете установить postData.filter, если необходимо, установить search: true и инициировать перезагрузку события. Важно сделать это один раз, чтобы не было рекурсии, и вы не должны устанавливать datatype в "json" в этом случае. datatype будет изменен на "local" и конец загрузки с сервера в случае использования опции loadonce: true. Если вы хотите применить фильтрацию локально , вам необходимо перезагрузить сетку один раз с помощью опций datatype: "local", search: true и postData, имеющих filters, определяющих фильтр, который необходимо применить. См. Код из ответа или другого , который делает другие вещи, но код, который вам нужен, будет очень близок.

1
ответ дан Community 1 September 2018 в 08:57
поделиться

Большое спасибо !!!!

Я добавил немного вашего решения, чтобы сохранить номер страницы:

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

                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", [{ page: postpage}]);
                    }, 25);
                }
            }
3
ответ дан cmedine 1 September 2018 в 08:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: