jqgrid перезагружают сетку после успешного встроенного обновления / встроенное создание записи

Я задаюсь вопросом, как я могу инициировать reloadGrid после встроенного редактирования строки.

  
    

    

3 ответа

Вот синтаксис функции editRow

jQuery("#grid_id").jqGrid('editRow', rowid, keys, oneditfunc, succesfunc, url, extraparam, aftersavefunc, errorfunc, afterrestorefunc);

oneditfunc: срабатывает после успешного обращение к строке для редактирования, предыдущий предоставление пользователю доступа к входу поля. Идентификатор строки передается как параметр этой функции.

Sucfunc: если определено, то эта функция вызывается сразу же после запрос успешен. Данная функция передаются данные, возвращаемые из Сервер. В зависимости от данных с сервер; эта функция должна вернуться правда или ложь.

aftersavefunc : если определено, то это функция вызывается после того, как данные сохраненный на сервере. Переданные параметры к этой функции относятся рядовой и ответ на запрос сервера.

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

jQuery('#grid').jqGrid("editRow", id, true, '', '', '', '', reload)

Я назначил вашу функцию reload, которая перезагружает сетку для параметра 'aftersavefunc''

сам метод перезагрузки должен быть определен следующим образом

function reload(rowid, result) {
  $("#grid").trigger("reloadGrid"); 
}
38
ответ дан 29 November 2019 в 23:48
поделиться

Посмотрите на метод Saverow:

Saverow (ROWID, SUCTECFUNC, URL, Extraparam, AfterSaveFunc, ONERRORFUNC)

, который определяет два обратных вызова (успехи, AfterSaveFunc), который будет называться, когда запрос будет успешно завершен, и после того, как данные были сохранены соответственно.

0
ответ дан 29 November 2019 в 23:48
поделиться

Из документов, я думаю AFTERSAVECELL будет работать лучше для вас ( AFTERSUBMITCELL может работать, но это, кажется, требует определенного возвращаемого значения. AddeeDItecell происходит до того, как произойдет удар сервера, так что будет слишком рано).

jQuery('#grid').jqGrid('editRow', id, true, reload);

jQuery(document).ready(function(){
    var lastcell; 
   jQuery("#grid").jqGrid({

      // [snip earlier config]

      onSelectRow: function(id){    
            if(id && id!==lastcell){
                jQuery('#grid').jqGrid('restoreRow',lastcell);
                jQuery('#grid').jqGrid('editRow',id,true);
                lastcell=id;
                }
            }, 
      editurl:"{% url set_hour_record_json_set %}",
      onAfterSaveCell: reload
   }).navGrid('#gridpager');
});

function reload(result) {
    $("#grid").trigger("reloadGrid"); 
} 

Тем не менее, перезагрузка всей сетки, вероятно, излишне, учитывая информацию, которую вы описали до сих пор. Если не существует сторона сервера по боковой обработке представленной информации (означающая, что данные в БД могут отличаться после сохранения), перезагрузка после простого редактирования кажется мне как пустая трата времени.

Как и за то, когда вы создаете новую строку, еще раз, если не существует только на стороне сервера, только для Data Muning, похоже, было бы легче просто получить новый идентификатор от отправки, а затем сделать это индивидуальное изменение в JQGRID. Однако, в конце концов, это многое зависит от того, как долго требуется перезарядка всего стола.

0
ответ дан 29 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

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