JQGrid setRowData После встроенного редактирования - PullRequest
0 голосов
/ 12 июля 2010

У меня проблема с обновлением строки после встроенного редактирования.Мой 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 = новое отредактированное значение электронной почты, поэтому у меня есть:

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 не определено, и я проверил, что идентификатор действительно правильный.

Я пытался поставить saverow после setRowData, но это не имеет значения для результата.

Еще раз, я очень ценю любое понимание проблемы.

С уважением, Байрон Кобб

Ответы [ 3 ]

2 голосов
/ 12 июля 2010

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

Мне кажется, что при использовании следует использовать 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 голосов
/ 26 мая 2011

Из документации 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");
}
0 голосов
/ 12 июля 2010

Частичное решение было найдено для всех, кто интересуется. 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);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...