Я задаюсь вопросом, как я могу инициировать reloadGrid после встроенного редактирования строки.
Вот синтаксис функции 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");
}
Посмотрите на метод Saverow:
Saverow (ROWID, SUCTECFUNC, URL, Extraparam, AfterSaveFunc, ONERRORFUNC)
, который определяет два обратных вызова (успехи, AfterSaveFunc), который будет называться, когда запрос будет успешно завершен, и после того, как данные были сохранены соответственно.
Из документов, я думаю 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. Однако, в конце концов, это многое зависит от того, как долго требуется перезарядка всего стола.