嗨,我有一个使用单元格编辑和内联编辑的网格。它保存到 ClientArray
$('#list').jqGrid({
datatype: "local",
colNames: ["Parameter Id", "Parameter Name", 'Parameter Value'],
colModel: [
{ name: "Id", index: "Id", align: "left", key: true, editable: false,hidden:true, jmap: 0 },
{ name: "ParameterName", index: "ParameterName", align: "left", editable: false, jmap: 1 },
{ name: "ParameterValue", index: "ParameterValue", align: "left", editable: true, edittype: "text", editoptions: { maxlength: 100 }, editrules: {required: true }, jmap: 2 }
],
pager: "#pager",
rowNum: 100,
rowList: [],
pgbuttons: false, // disable page control like next, back button
pgtext: null, // disable pager text like 'Page 0 of 10'
viewrecords: true, // disable current view record text like 'View 1-10 of 100'
height: '100%',
scrollOffset: 0,
sortname: "Name",
sortorder: "Asc",
gridview: true,
caption: 'Parameters',
autowidth: true,
hidegrid: false,
loadonce: true,
//beforeEditCell: function () {
// $("#list_ilsave").removeClass('ui-state-disabled');
// return;
//},
//afterEditCell: function (rowid, cellname, value, iRow, iCol) {
// $('#list').jqGrid('getCell', rowid, iCol).focus();
// return;
//},
width: totalWidth,
cellEdit: true,
cellsubmit: "clientArray"
});
$('#list').jqGrid('inlineNav', '#pager', {
edit: false,
add: false,
del: false,
save: true,
savetext: 'Save',
cancel: false
});
当我编辑单元格时,保存按钮保持禁用状态。如果我在 beforeCellEdit 中手动启用按钮,则在您选择另一个单元格之前,可编辑单元格不会获得焦点。这种行为只发生在 IE 中。
我试图在我注释掉的代码中单独解决这两个问题,我发现失去焦点是由该行引起的
$("#list_ilsave").removeClass('ui-state-disabled');
我尝试将此行放在 beforeEditCell 和 afterEditCell 中,它会导致输入字段失去焦点。
我正在使用 JQ Grid 4.4.4,并且在阅读了 4.4.4 之后对内联编辑的更新后,我尝试更新到 4.6.0
更新 我已将网格更改为使用 onSelectRow
onSelectRow: function (rowid) {
var $grid = $('#list');
var iRow = $("#" + rowid)[0].rowIndex;
$grid.jqGrid('editRow', rowid, {
keys: true,
oneditfunc: function(rowid, response) {
var $saveButton = $("#list_ilsave");
if ($saveButton.hasClass('ui-state-disabled')) {
$saveButton.removeClass('ui-state-disabled');
}
markCellAsDirty(rowid, $grid);
return true;
},
successfunc: function() {
alert('success');
return true;
},
aftersavefunc: function() {
alert('after save');
return true;
},
errorfunc: function() {
alert('error');
return true;
}
});
},
cellsubmit: "clientArray"
但除了oneditfunc
. 我也有获取更改的单元格的问题。
此方法将单元格标记为脏/已编辑
function markCellAsDirty(rowid, grid) {
$(grid.jqGrid("setCell", rowid, "ParameterValue", "", "dirty-cell"));
$(grid[0].rows.namedItem(rowid)).addClass("edited");
}
我尝试按如下方式获取编辑过的单元格
var editedRows = $grid.getChangedCells('dirty');
在将 AJAX 方法中的editedRows 发布到我的服务器之前。