实际上,我已经实现了一个 REST 解决方案,用于在 jQGrid 上的 NavGrid 中 POST、PUT 和 DELETE 数据。
现在,在每一行的操作按钮中,我尝试执行相同的操作,但我不知道如何在默认格式化程序操作上生成动态 url。
我尝试这样做:
colModel : [
{name:'actions', index:'', width:80, fixed:true, sortable:false, resize:false,
formatter:'actions',
formatoptions:{
url: function(cellValue, rowId, rowData){
return restPutURL + '/' + rowId ;
},
mtype: 'PUT',
keys:true,
delOptions:{
url: restDelURL,
recreateForm: true,
beforeShowForm:beforeDeleteCallback,
onclickSubmit :function(params, postdata) {
params.url += '/' + postdata;
}
}
}
},
{ ...my cols.. }
]
删除操作可以,但编辑不起作用。当保存一行时,jQGrid 发送函数作为 URI 的一部分:
system/function%20(cellValue,%20rowId,%20rowData)%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(cellValue);%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/system/function%20(cellValue,%20rowId,%20rowData)%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
如何创建动态 URI?或者,如何将已编辑行的 id 添加到 URI?
最佳答案
如果您使用当前版本的 jqGrid,您可以使用 beforeSaveRow
回调在保存行之前执行一些操作,例如修改 URL。不幸的是 formatter: "actions"
不允许您设置 beforeSaveRow
回调,但您仍然可以使用 $.jgrid.inlineEdit
来执行此操作。相应的代码可能类似于
$.extend(true, $.jgrid.inlineEdit, {
beforeSaveRow: function (option, rowId) {
option.url = restPutURL + '/' + rowId;
}
});
或
$.extend(true, $.jgrid.inlineEdit, {
beforeSaveRow: function (option, rowId) {
option.url = this.p.editurl + '/' + rowId;
}
});
关于格式化程序操作的 'formatoptions' 上的 jQGrid 动态 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082840/