Завершение редактирования в jqgrid
Я использую jqgrid с большим успехом следующим образом:
- данные загружаются с сервера как JSON
- пользователь делает встроенное редактирование
-
при нажатии кнопки сохранения все данные сериализуются с помощью:
var data = $("#mygrid").getRowData();
var datajson = JSON.преобразовать в строки(данных);
проблема с этим aproach заключается в том, что я получу входные элементы в моих JSON-данных, если пользователь не нажал return или не отошел от редактируемой ячейки. Есть ли способ завершить режим редактирования i jqgrid?
3 ответов
можно использовать saveRow сохранить данные.
использовать saveRow вы должны знать идентификатор строки текущей редактируемой строке. Например, вы можете сохранить rowid текущего редактирования в переменной (перед вызовом editRow) и использовать значение для вызова saveRow
метод.
обновление: посмотреть демо. Сначала выберите некоторую строку, измените значения, а затем нажмите " сохранить текущее редактирование кнопка "строка". Вы увидите, что изменения будут сохранены.
Я решил это, вызвав "keydown" введите событие на элементе:
editoptions: {
dataInit: function(elem) {
$(elem).datetimepicker({
dateFormat: "yy-mm-dd",
onClose: function(datetimeText, datepickerInstance) {
$(elem).trigger($.Event( "keydown", { keyCode: $.ui.keyCode.ENTER } ))
}
});
}
}
Я использую remote submit для каждой ячейки, и поскольку я использовал "contenteditable" div для редактора ячеек (для многострочного текста), я хотел закончить редактирование ячейки с помощью ctrl-enter.
(на основе ответа Олега и как закрыть cell-editor? и http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing)
$(document).ready(function() {
var grid,currentCell;
$(".jqGrid_wrapper").on("keydown","div[contenteditable]",function (e) {
if (e.ctrlKey && e.keyCode == 13)
{
grid.jqGrid("saveCell",currentCell.iRow,currentCell.iCol);
return false;
}
return true;
});
grid=$("#table_list_2");
grid.jqGrid({
url: ...
cellEdit: true,
cellsubmit: 'remote',
cellurl: '..',
beforeEditCell: function(rowid, cellname, value, iRow, iCol) {
currentCell={
rowid:rowid, cellname:cellname, value:value, iRow:iRow, iCol:iCol
}
}
});
});