как загрузить новые добавленные данные в jqgrid - PullRequest
1 голос
/ 11 апреля 2011

Я знаю, это звучит просто для некоторых людей.Я также попробовал это один .но по какой-то причине я действительно не могу обновить и просмотреть мои недавно добавленные, отредактированные и удаленные в jqgrid.

Я делаю кнопку в моей программе, которая будет добавлять, редактировать и удалять, и после этого она будетобновите мой jqgrid и покажите, какие изменения я внес в их.Например, я добавил новые данные.в первой попытке он отобразит вновь добавленные данные, но во второй раз больше не будет отображаться.Мои данные редактирования и удаления также не обновятся.вот код:

function Edit(){  
   var selected = $("#list1").jqGrid('getGridParam', 'selrow');  
   var dat = {
     "ID": 'xyz',
     ...
     "keyFields": [{"..."}] 
   };                
  update(dat); 
  $('#list1').trigger('reloadGrid');  
} 

function update(dat){
  $.ajax({
     type: 'GET',
     url: 'mydata.php?' + $.param({path:'this/update',json:JSON.stringify(dat)}),
     dataType: Settings.ajaxDataType,
     success: function(data) {
       if ('error' in data)
       {
         alert('ERROR']);
       }
    }
  });
}

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

1 Ответ

3 голосов
/ 11 апреля 2011

Вы не опубликовали какое-либо определение jqGrid, которое вы используете, поэтому я могу сказать только то, что не так в коде, который вы опубликовали.

Первая проблема заключается в том, что вам нужно поместить строку $('#list1').trigger('reloadGrid'); внутри success дескриптор $.ajax вызова вашей функции update.Только после успешного обновления данных на сервере вы должны инициировать перезагрузку сетки.

Вторая возможная проблема, с которой вы можете столкнуться, если вы используете параметр loadonce:true, который изменяет исходное значение параметра datatype в jqGridдо datatype:'local'.Если вы используете loadonce:true и вам нужно перезагрузить данные с сервера, вам нужно сбросить параметр datatype в jqGrid к его начальному значению («xml» или «json» зависит от того, что вы используете) и только затем перезагрузить сеткув отношении 'reloadGrid'.Чтобы изменить datatype, вы можете использовать setGridParam метод jqGrid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...