jqgrid restorerow не работает с подкачкой - PullRequest
1 голос
/ 22 ноября 2011

Существует 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 никогда не делает поля записей снова недоступными для редактирования. Это также изменяет кнопки сохранения / отмены назад для редактирования.

Странно, что сохранение после выполнения тех же шагов работает нормально. Проблема заключается только в восстановлении страницы.

...