2017-02-01 8 views
1

У меня есть следующий код привязки события. Когда я пытаюсь сохранить строку, функция события запускается, но я не получаю никаких данных о строках? Мне нужно получить целые данные и выполнить итерацию, чтобы найти идентификатор. Это верно???Событие jqGrid: jqGridInlineAfterSaveRow rowdata empty?

$("#jqGrid").bind("jqGridInlineAfterSaveRow", function (e, rowid, orgClickEvent) { 
    console.log("[Start]jqGridInlineAfterSaveRow"); 
    console.log(rowid); 
    console.log(orgClickEvent); 
    console.log(e); 

    var data = $("#jqGrid").jqGrid('getGridParam', 'data'); 
    $.each(data, function(index, item){ 
     if(item._id_ === rowid){ 
     console.log(item); 
     } 
    });  


    console.log("[End]jqGridInlineAfterSaveRow"); 
    return e.result === undefined ? true : e.result; 
}); 

enter image description here

ответ

3

Пожалуйста, включите всегда информацию о версии jqGrid, который вы используете (можно использовать) и вилку (free jqGrid, коммерческий Guriddo jqGrid JS или старый jqGrid в версии < = 4,7) ,

В любом случае параметры

$("#jqGrid").bind("jqGridInlineAfterSaveRow", 
    function (e, rowid, jqXhrOrBool, postData, options) { 
     var item = $(this).jqGrid('getLocalRow', rowid); 
     //... 
    } 
); 

В случае, если параметр 3-d булева в случае сохранения локальных данных и jqXHR в случае сохранения данных на сервер с помощью запроса Ajax. Параметр postData содержит измененные данные, которые вам, вероятно, понадобятся. Если вы подаете все данные о строке вместо только редактируемых полей, то вы можете использовать getLocalRow, чтобы получить ссылку на элемент внутреннего data, который представляет полные данные локальных строк.

Я проверил прямо сейчас событие jqGridInlineAfterSaveRow в бесплатном jqGrid 4.13.6, которое я разрабатываю, и событие действительно содержит параметры, которые я описал выше.