JQGRID сохраняется при публикации исходного значения postData при использовании reloadGrid - PullRequest
0 голосов
/ 10 апреля 2020

Моя начальная сетка построена

    $("#dims_list").jqGrid({        
    url: "ajax_get_dims_for_grid.php",
    postData: {'dims_guid': $('#dims_guid').val()},

Когда я обновляю sh сетку с новым параметром, исходное значение отправляется (сохраняется)

      var dims_guid = $("#dims_guid").val(); // New value for the grid 
      $("#dims_list").jqGrid('setGridParam',{"dims_guid":dims_guid}).trigger('reloadGrid');

Я проверял это в окне разработчика Chrome и можете увидеть новое значение в var dims_guid, но старое значение публикуется на странице, которая извлекает данные из базы данных.

Я только что перешел из freeJQgrid в Guriddo jqGrid

Я на самом деле попробовал следующий код

     var url="ajax_get_dims_for_grid.php?dims_guid="+$("#dims_guid").val();
     $("#dims_list").jqGrid('setGridParam',{"url":url}).trigger('reloadGrid');

И в Chrome строка запроса была продублирована со старым, имеющим приоритет

Параметры строки запроса

dims_guid: 100d7c6d-bcba-4b13-8832-f9de7794498 c

dims_guid: dbc02dbe-e3d8-4b7d-8389-2678221ea189

10:

nd: 1586531572226

строки: 20

страница: 1

sidx:

sord: as c

Is это известная проблема?

1 Ответ

0 голосов
/ 13 апреля 2020

Если postData используется для отправки параметров на сервер, этот параметр (postData) расширяется каждый раз, когда параметры, публикуемые на сервере, если сделан запрос. Согласно документации . Этот массив добавляется непосредственно к URL.

Проблема, с которой вы столкнулись, заключается в том, что вы неправильно установили новый параметр при запуске сетки. Что вы делаете:

var dims_guid = $("#dims_guid").val(); // New value for the grid 
    $("#dims_list").jqGrid('setGridParam' {"dims_guid":dims_guid}).trigger('reloadGrid');

Таким образом, вы добавляете новый параметр в сетку и не меняете существующий. Чтобы исправить это, необходимо изменить это в postData следующим образом:

var dims_guid = $("#dims_guid").val(); // New value for the grid 
  $("#dims_list").jqGrid('setGridParam',{ "postData" : { "dims_guid":dims_guid} }).trigger('reloadGrid');

Надеюсь, вы понимаете разницу.

Другое возможное решение - не использовать postData (удалить postData из параметры), но используйте URL только для изменения параметра, как вы делаете это во втором опубликованном коде. Вот так:

$("#dims_list").jqGrid({        
url: "ajax_get_dims_for_grid.php?dims_guid="+$("#dims_guid").val(),

, а затем

 var url="ajax_get_dims_for_grid.php?dims_guid="+$("#dims_guid").val();
 $("#dims_list").jqGrid('setGridParam',{"url":url}).trigger('reloadGrid');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...