2010-07-12 130 views
0

我在内联编辑后更新行时遇到问题。 我ColModel是:JQGrid setRowData内联编辑后

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山坳值=新编辑的电子邮件值,所以我有:

ondblClickRow: function (id, ri, ci) { 
      lastSelUser = id; 
      $("#UserGrid").editRow(id, true, false, reload); 
     } 

进而调用加载的onSuccess编辑的,

现在我的参考电子邮件不会更新 - cell value的警报正确返回,但ref(referenceemail) value的警报是und efined,我已经检查过,id是事实上正确的。

我试过把saverow放在setRowData之后,但这对结果没有任何影响。

再次, 我非常感谢所有对此问题的洞察力。

问候, 拜伦科布

回答

0

的部分解决方案,已经发现,任何人知道。该jqGrid的editRow接受以下PARAMATERS:

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

我不知道我正确理解你的问题。

在我看来,使用参数editRow而不是succesfunc(见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#editrow)。在数据将被保存在jqGrid中的之后,事件aftersavefunc将被称为。只有在$.ajax(无本地数据编辑支持)并且在请求完成之后立即调用事件succesfunc之后才将数据保存在网格中的之前。

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

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

其中dataReferenceEmail新值。

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