jqGrid: как вызвать "reloadGrid", чтобы обновить сетку из внешних фильтров

У меня есть фильтры вне jqGrid, которые должны вызвать перезагрузку сетки. Эта запись дала мне некоторое представление о том, как ее реализовать, используя опцию postData: как фильтровать данные jqGrid, не используя встроенное поле поиска/фильтра К сожалению, фрагменты кода являются фрагментами, и я не могу понять, какой должна быть общая последовательность вызовов. Вот краткий обзор моего нынешнего подхода:

<script>
  $(document).ready(function() {
    $("#submit").click(function(e) {
      e.preventDefault();
      myGrid.trigger('reloadGrid');
    }); 
  });

var url="${servicesUrl}/projects";

var myGrid = $("#projectList").jqGrid({
    url: url,
    datatype: 'json',
    mtype: 'GET',  
    // ...
});
</script>

Как я должен структурировать код так, что каждый щелчок кнопки "Отправить" вызовет перезагрузку сетки? Как только я это выясню, я уверен, что смогу добавить часть posData, моя проблема в основном с общей последовательностью вызовов. Я не уверен, какие вызовы должны быть внутри функции ready() и как правильно вызвать "reloadGrid". Любая помощь очень ценится.

1 ответов


это то, что сработало для меня: я установил обратный вызов на beforeRequest событие, которое обновляет postData свойство перед каждым запросом.

обратите внимание, что вы хотите, чтобы весь код инициализации jqGrid внутри $(document).ready(function(){}); функция, в противном случае ваш элемент таблицы может быть еще не в DOM

var url="${servicesUrl}/projects";

$(document).ready(function() {
    var $table = $("#projectList");

    $table.jqGrid({
        url: url,
        datatype: 'json',
        mtype: 'GET',  

        beforeRequest: function() {
            var postData = $table.getGridParam('postData');
            //add parameters to postData here
        }
        // ...
    });

    $("#submit").click(function(e) {
        e.preventDefault();
        $table.trigger('reloadGrid');
    }); 
});