Итак, я пытаюсь запустить событие ПОСЛЕ локального удаления в jqgrid.Причина этого заключается в том, что я имею дело с глобальным сохранением на веб-сайте, поэтому я не публикую напрямую на сервер.Я храню данные в форме JSON в скрытом элементе на странице, поэтому, когда пользователь, наконец, сохраняет элемент, значение захватывается и отправляется на сервер вместе со всеми остальными данными.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я удаляю строку из jqgrid, я не могу обновить скрытый элемент с изменением, поэтому, если пользователь сохраняет после этого, это похоже на то, что удаление никогда не происходило
$("#translationMappingGrid").jqGrid({
data: mydata,
datatype: "local",
mtype: 'GET',
colNames:['From','To', 'Type'],
colModel :[
{name:'from',index:'from', width:180, align:"left",sorttype:"float", editable: true, editrules:{custom:true, custom_func:validateIPGridInput}},
{name:'to',index:'to', width:180, align:"left",sorttype:"float", editable: true, editrules:{custom:true, custom_func:validateIPGridInput}},
{name:'type',index:'type', width:200,align:"left",sorttype:"float", editable: true,
edittype:"select", formatter:'select', editoptions:{
value:"0:Never Translate;1:Always Translate;2:Only If Source;3:Only If Destination"}
},
],
pager: '#pager',
rowNum:10,
rowList:[10,20,30],
sortname: 'invid',
sortorder: 'desc',
viewrecords: true,
gridview: true,
caption: 'Mapping',
editurl: 'probe.sysinfo.ajax',
url:'clientArray',
onSelectRow: function(id){
jQuery('#translationMappingGrid').jqGrid('restoreRow',lastsel2);
//below are the parameters for edit row, the function is called after a successful edit has been done
//jQuery("#grid_id").jqGrid('editRow',rowid, keys, oneditfunc, succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc);
jQuery('#translationMappingGrid').jqGrid('editRow',id,true,"","","","",function () {
setTranslationMappingJSON(getGridDataJSONString(this));
window.parent.document.getElementById('notificationDiv').style.display= "";
});
lastsel2=id;
},
afterInsertRow: function(rowid, rowdata, rowelem ){
//alert("after insert row");
setTranslationMappingJSON(getGridDataJSONString(this));
window.parent.document.getElementById('notificationDiv').style.display= "";
}
});
//adds buttons to jqgrid nav bar
jQuery("#translationMappingGrid").navGrid('#pager',{
edit:false,add:true,del:true,search:false,refresh:true
}, {
closeAfterAdd:true,
closeAfterEdit: true
},
{
closeAfterAdd:true,
closeAfterEdit: true,
afterSubmit: function(response, postdata) {
alert("after complete row");
setTranslationMappingJSON(getGridDataJSONString(this));
window.parent.document.getElementById('notificationDiv').style.display= "";
return [true,""];
}
});
Как указано в приведенном выше коде, я успешно обновляю скрытый элемент, внося изменения как в добавление, так и в редактирование (inline) с помощью afterrestorefunc, но это не работает для удаления.пытался использовать afterSubmit в коде выше, но это тоже не работает.Я работал над этим уже несколько дней и пришел к выводу, что мне, возможно, придется написать свой собственный код для кнопки удаления полностью, но я надеюсь, что это не так.