Существует jqgrid с 10 записями. Каждая запись имеет кнопку, которая делает текущий ряд редактируемым. после нажатия кнопки редактирования мы заполняем старое поле редактирования кнопкой сохранения и отмены. После сохранения / отмены кнопка редактирования восстанавливается. Все это работает нормально, пока вы не попытаетесь отредактировать запись, а затем измените попытку изменить страницу на следующие 10 записей.
var btnSave = "<input style='height:22px;' type='button' value='Save' onclick=\"$('#list').jqGrid('saveRow', '" + rowId + "', null, '<%= Url.Action("GridSave","Translation")%>', null, aftersavefunc);\" />";
var btnCancel = "<input style='height:22px;' type='button' value='Cancel' onclick=\"$('#list').jqGrid('restoreRow', '" + rowId + "', aftercancelfunc);\" />";
$("#list").jqGrid('setRowData', rowId, { act: btnSave + btnCancel });
После нажатия кнопки редактирования, если вы попытаетесь изменить страницу, появится диалоговое окно подтверждения, предупреждающее вас о том, что вы можете потерять изменения.
Это внутри кода подкачки:
onPaging: function (pgButton) {
// pgButton: first, last, prev, next, records (# of records ddl), user (user types in new page num)
// if in edit mode:
var nextPg = $("#list").getGridParam("page");
var nextRecords = $("#list").getGridParam("rowNum");
if(inEditMode) {
var result = confirm("You might be abandoning unsaved changes. Are you sure you want to perform this action?");
if (!result) {
$("#list").setGridParam({ page: currPg, rowNum: currRecords }); //Workaround - jqGrid still increments the page num even when we return stop so we have to reset it (and track the current page num)
return 'stop';
}
else {
$("#list").jqGrid('showCol', ["act"]);
}
}
},
Если вы отмените диалог, вы останетесь на текущей странице.
Проблема, с которой мы сталкиваемся, заключается в том, что если вы редактируете запись, пытаетесь изменить страницу, отменяете изменение страницы и пытаетесь отменить редактирование записи, restoreRow никогда не делает поля записей снова недоступными для редактирования. Это также изменяет кнопки сохранения / отмены назад для редактирования.
Странно, что сохранение после выполнения тех же шагов работает нормально. Проблема заключается только в восстановлении страницы.