在内联编辑后更新行时遇到问题。 我的ColModel是:
colModel: [
{ name: 'Email', index: 'Email', editable: true },
{ name: 'ReferenceEmail', index: 'ReferenceEmail', editable: true },
// hidden: true, editable: true, editrules: { edithidden: true}
{ name: 'Title', index: 'Title', editable: true, edittype: "select",
editoptions: { value: "Mr:Mr;Mrs:Mrs;Ms:Ms;Doctor:Doctor;Sir:Sir"} },
{ name: 'Forename', index: 'Forename', editable: true },
{ name: 'Surname', index: 'Surname', editable: true },
{ name: 'Study_Manager', index: 'Study_Manager', editable: true,
edittype: "select", editoptions: { value: "True:True;False:False"} }
]
我打算设置referenceemail col值=新编辑的电子邮件值,所以我有:
ondblClickRow: function (id, ri, ci) {
lastSelUser = id;
$("#UserGrid").editRow(id, true, false, reload);
}
反过来调用重新加载编辑,
function reload(result) {
var cell = $("#UserGrid").getCell(lastSelUser, 'Email');
var newEmail = $(cell).val();
$("#UserGrid").saveRow(lastSelUser, false);
$("#UserGrid").setRowData(lastSelUser, { ReferenceEmail: newEmail });
var ref = $("#UserGrid").getCell(lastSelUser, 'ReferenceEmail');
alert($(cell).val());
alert($(ref).val());
}
现在我的参考邮件没有得到更新 - cell value
的警报正确返回,但是ref(referenceemail) value
的警报未定义,我检查了id是否正确无误。
我已经尝试将saverow
放在setRowData
之后,但这对结果没有任何影响。
再一次, 我非常感谢对此问题的任何和所有见解。
此致 Byron Cobb
答案 0 :(得分:2)
我不确定我是否理解你的问题。
在我看来,该用法应使用aftersavefunc
的{{1}}参数而不是editRow
(请参阅http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#editrow)。在jqGrid中保存数据后,事件succesfunc
将被称为。事件aftersavefunc
将仅在succesfunc
(无本地数据编辑支持)之后以及请求在网格中保存数据之前完成后立即调用。
$.ajax
事件作为参数aftersavefunc
- 已修改行的ID和rowid
- 来自服务器的响应。因此,如果服务器可以根据res
值设置ReferenceEmail
字段,则可以使用结果。要设置Email
字段,您只需使用
ReferenceEmail
其中$("#UserGrid").jqGrid('setCell',rowid,'ReferenceEmail', data);
是data
的新值。
答案 1 :(得分:0)
已经找到了任何想知道的部分解决方案。 jqGrid editRow接受以下参数:
jQuery("#grid_id").editRow(rowid, keys, oneditfunc, succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc
.setRowData似乎不能在succesfunc中工作,但它在aftersavefunc中有效,所以我的新调用是$("#UserGrid").editRow(id, true, false, false, false, false, reload);
而不是$("#UserGrid").editRow(id, true, false, reload);
答案 2 :(得分:0)
来自JQGrid文档:
$("#updateButton").click( function(){
var success=jQuery("#list5").jqGrid('setRowData',11,{amount:"333.00",tax:"33.00",total:"366.00",note:"<img src='images/user1.gif'/>"});
if(success) {
alert("Succes. Write custom code to update row in server");
}
else {
alert("Can not update");
}