JQGrid setRowData内联编辑后

时间:2010-07-12 09:48:51

标签: jqgrid

在内联编辑后更新行时遇到问题。 我的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

3 个答案:

答案 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");
}