我以下列方式使用jqgrid取得了巨大成功:
单击保存按钮时,所有数据都使用以下序列进行序列化:
var data = $(“#mygrid”)。getRowData();
var datajson = JSON.stringify(data);
这种方法的问题在于,如果用户没有按下返回或离开编辑过的单元格,我将在我的json数据中获取输入元素。有没有办法结束编辑模式i jqgrid?
答案 0 :(得分:5)
您可以使用saveRow保存数据。
要使用saveRow,您必须知道当前可编辑行的行ID。例如,您可以将当前编辑的rowid保存在变量中(在调用editRow之前)并使用该值来调用saveRow
方法。
更新:请参阅the demo。首先选择一些行,修改值,然后单击“保存当前编辑行”按钮。您将看到更改将被保存。
答案 1 :(得分:0)
我通过触发" keydown"解决了这个问题。在元素上输入事件:
editoptions: {
dataInit: function(elem) {
$(elem).datetimepicker({
dateFormat: "yy-mm-dd",
onClose: function(datetimeText, datepickerInstance) {
$(elem).trigger($.Event( "keydown", { keyCode: $.ui.keyCode.ENTER } ))
}
});
}
}
答案 2 :(得分:0)
我为每个单元格使用远程提交,因为我使用了" contenteditable" div为单元格编辑器(对于多行文本),我想用ctrl-enter完成单元格编辑。
(基于Oleg的回答以及How to close 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
}
}
});
});