2010-07-12 3 views
0

У меня возникла проблема с обновлением строки после встроенного редактирования. Мой ColModel является:JQGrid setRowData После inline edit

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

, который в свою очередь вызывает перезагрузку OnSuccess из редактирования,

Теперь мое справочное письмо не обновляется - предупреждение cell value возвращается правильно, но предупреждение ref(referenceemail) value is und efined, и я проверил, что идентификатор неверен.

Я попытался поставить saverow после setRowData, но это не имеет никакого отношения к исходу.

Еще раз, Я очень благодарен всем и всем за понимание проблемы.

С уважением, Byron Кобб

ответ

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

Я не уверен, что Я правильно понял ваш вопрос.

Мне кажется, что использование должно использовать aftersavefunc параметр editRow вместо succesfunc (см http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#editrow). Событие aftersavefunc будет называться после того, как данные будут сохранены в jqGrid. Событие succesfunc будет вызываться только после $.ajax (без поддержки локального редактирования данных) и сразу после завершения запроса до сохранения данных в сетке.

aftersavefunc событие принимает в качестве параметров rowid - идентификатор измененной строки и res - ответ с сервера. Поэтому, если поле ReferenceEmail может быть установлено сервером на основании значения Email, вы можете использовать результаты. Для того, чтобы установить ReferenceEmail поле вы можете просто использовать

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

где data это новое значение ReferenceEmail.

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"); 
} 
Смежные вопросы