内联编辑后的JQGrid setRowData

内联编辑后的JQGrid setRowData,jqgrid,Jqgrid,在内联编辑后更新行时遇到问题。 我的模型是: colModel: [ { name: 'Email', index: 'Email', editable: true }, { name: 'ReferenceEmail', index: 'ReferenceEmail', editable: true }, // hidden: true, editable: true, editrules: { edithidden: true} { name: 'Titl

在内联编辑后更新行时遇到问题。 我的模型是:

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);
        }
然后在编辑成功时调用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());

}
现在,我的参考电子邮件没有得到更新-单元格值
的警报正确返回,但
ref(referenceemail)值的警报未定义,我已检查id是否正确

我尝试将
saverow
放在
setRowData
之后,但这对结果没有影响

再次,, 我非常感谢对这个问题的所有见解

问候,,
拜伦·科布(Byron Cobb)

对于任何想知道的人来说,已经找到了部分解决方案。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,reload)
而不是
$(“#UserGrid”).editRow(id、true、false、reload)

我不确定我是否正确理解了你的问题

在我看来,该用法应该使用
editRow
aftersavefunc
参数,而不是
succesfunc
(请参阅)。在jqGrid中保存数据后,将调用事件
aftersavefunc
。事件
succesfunc
仅在
$.ajax
(无本地数据编辑支持)之后调用,并在请求完成后立即调用,然后将数据保存到网格中

aftersavefunc
事件作为参数从服务器接收修改行的
rowid
-id和
res
-response。因此,如果服务器可以根据
Email
值设置
ReferenceEmail
字段,则可以使用结果。要设置
ReferenceEmail
字段,只需使用

$("#UserGrid").jqGrid('setCell',rowid,'ReferenceEmail', data);

其中
data
是JQGrid文档中
ReferenceEmail

的新值:

$("#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");
}
$(“#更新按钮”)。单击(函数(){
var success=jQuery(#list5”).jqGrid('setRowData',11,{amount:'333.00',tax:'33.00',total:'366.00',注:'});
如果(成功){
警报(“成功。写入自定义代码以更新服务器中的行”);
}
否则{
警报(“无法更新”);
}