【发布时间】:2016-01-26 07:50:27
【问题描述】:
我使用 jqGrid 4.9.3-pre - Oleg 的免费 jqGrid。我想添加一条新记录并在没有模式窗口的情况下进行编辑。
我这样做:
- 在 loadComplete 时,我添加一个 id=0 的新空记录。在这里我们可以添加一个 新纪录。
- 从数据库中添加新条目后,获取其 ID。替换 ID 上的 0 值。
- 添加新记录后会创建另一个空行,依此类推。
我找到了解决方案。感谢 Oleg!
var flag = false;
....
afterSaveCell: function(rowid, cellname, value, iRow, iCol) {
$('#' + lastRowId).attr("id", respText);
},
afterSubmitCell: function(serverresponse, rowid, cellname, value, iRow, iCol){
var rows = $("#contract_subgrid")[0].rows;
lastRowId = rows[rows.length-1].id;
var response = (serverresponse.statusText).trim();
if (response == 'OK'){
respText = serverresponse.responseText;
if(respText=='0' || respText==""){
return [true,""];
}
else {
$(this).jqGrid('setCell', lastRowId, 'id', respText);
$(this).jqGrid('addRowData', undefined, {});
return [true,""];
}
}else{
return [false,respText];
}
},
loadComplete: function () {
if(flag === false) {
$(this).jqGrid('addRowData', undefined, {});
flag = true;
}
},
【问题讨论】:
-
对不起,我不明白你想要实现的场景。在我看来,使用单元格编辑 (
cellEdit: true) 似乎不是最好的选择。无论如何,如果您使用默认的cellsubmit:'clientArray',则永远不会调用afterSubmitCell。addRowDatasame id="0" 的用法不好。您可以有 id 重复项。您可以改用$(this).jqGrid('addRowData', undefined, {});。更好的是使用$(this).jqGrid('addRow', {position: "last"})和inlineNav。您需要另外将defaultValue: "Intim"修复为defaultValue: "IN" -
您可以在
inlineEditing内部使用aftersavefunc来更新保存到服务器后的rowid。您需要为其指定editurl。看jsfiddle.net/OlegKi/tzp91wnf/2,在哪里需要加上editurl和aftersavefunc的原因。 -
Добрый день Олег。 Если не против я вам лучше напишу по русскому。 Я хочу добавлять новые записи без 模态窗口。 Для этого я специально добавляю пустую строку с id=0。 По идее совпадений id быть не должно。 Т.к. когда мы изменяем что-то в ячейке - то это вносится в базу данных。 Иот сервера mysql приходит ID где была добавлена запись。 Далее заменяем id=0 на то, что пришло с сервера что бы избежать повтора id.
-
$(this).jqGrid('setCell', 0, 'id', serverresponse.responseText); $("#0").attr("id", serverresponse.responseText); $(this).jqGrid('addRowData', 0, {});
-
serverresponse.responseText вот здесь и будет id от сервера。 Я проверил вроде работает и id меняется。 Но записи которые мы добавляем постоянно активные - в этом и проблема。
标签: javascript jqgrid free-jqgrid