Встроенное редактирование jqGrid запускается одним щелчком мыши по событию onSelectRow, указанному ниже.Кнопки действий «Сохранить и отменить» включены.
Нажатие кнопки «Сохранить» или «Отмена» не завершает встроенное редактирование.Строка остается в режиме редактирования после нажатия на эти кнопки.Похоже, что нажатие кнопки вызывает событие onSelectRow, которое перезапускает встроенное редактирование.
Как завершить встроенное редактирование одним щелчком при нажатой кнопке сохранения или отмены действия?
Сетка содержит флажок на панели инструментов, который переключает режим редактирования одним щелчком для быстрого ввода данных (авторедактирование):
onSelectRow: function (rowID) {
if (!autoedit) {
if (typeof (lastSelectedRow) !== "undefined" && lastSelectedRow !== rowID)
cancelEditing ($(this));
return;
}
beginInlineRowEdit(rowID);
},
Даже в этом режиме текст может быть выделен и скопирован в буфер обмена.Проблема в том, что в режиме одного клика нажатие кнопки «Сохранить и отменить» не прекращает встроенное редактирование, возможно, этот щелчок интерпретируется как команда начала редактирования.Как проверить onSelectRow, если щелкнуть в столбце действия, и не начинать встроенное редактирование в этом случае, сделать так, чтобы столбец действия не начинал встроенное редактирование или другие идеи?* Я пробовал
beforeSelectRow: function (rowID,e) {
alert( $(e.target).html());
}
Если щелкнуть по кнопке редактирования, окно сообщения пустое.Он также пуст, если щелкнуть за пределами флажка флажка.Если щелкнуть за пределами кнопки редактирования, он содержит HTML-код всей сетки.Как отменить клик в столбце действий?
Обновление 3
Как предложил Олег, я попытался
beforeSelectRow: function (rowID,e) {
if (!jqgrid_beforeSelectRow( rowID, e)) return false;
beginInlineEdit(rowID, aftersavefunc );
return true;
}
function beginInlineEdit(rowID, afterSave) {
var grid2 = $("#grid");
if (rowID && rowID !== lastSelectedRow) {
var scrollPosition = $("#grid").closest(".ui-jqgrid-bdiv").scrollLeft();
cancelEditing($("#grid"));
lastSelectedRow = rowID;
setTimeout(function () {
grid2.closest(".ui-jqgrid-bdiv").scrollLeft(scrollPosition);
}, 100);
}
$("tr#" + lastSelectedRow + " div.ui-inline-edit, " + "tr#" + lastSelectedRow + " div.ui-inline-del").hide();
$("tr#" + lastSelectedRow + " div.ui-inline-save, " + "tr#" + lastSelectedRow + " div.ui-inline-cancel").show();
$("#grid").jqGrid('editRow', lastSelectedRow, true, null, null, null,
{ _dokdata: FormData },
afterSave,
errorfunc,
function () { // afterrestorefunc
cancelEditing($("#grid"));
setFocusToGrid();
}
);
}
jqgrid_beforeSelectRow = function (rowID, e) {
if ($(e.target).hasClass('ui-icon-cancel')) { return false; }
if ($(e.target).hasClass('ui-icon-disk')) { return false; }
if (typeof (lastSelectedRow) !== "undefined" && lastSelectedRow !== rowID)
cancelEditing($("#grid"));
return true;
}
function cancelEditing(myGrid) {
if (typeof lastSelectedRow !== "undefined") {
myGrid.jqGrid('restoreRow', lastSelectedRow);
restoreActionsIcons();
}
}
Используя обычный двойной щелчок, чтобы начать редактирование,В сетке товаров кнопка редактирования первой строки запускается только в первый раз.после нажатия кнопки сохранения оставшиеся щелчки в кнопке редактирования игнорируются, встроенное редактирование не начинается.Это происходит, только если первые строки в таблице товаров.В нижних строках редактирование может начинаться несколько раз.как это исправить?