经过长时间的搜索,我成功删除了一个带有表单编辑的jqgrid中的行。
但是,剩下两件小事:
我试图在事件“afterSubmit”中搜索传递给函数的参数,但是没有关于如何操作这些参数的真实解释。
网格的创建:
tableToGrid("#TabUser", {
caption: 'Gestion des Utilisateurs',
width: 'auto',
height: "auto",
hidegrid: false,
pager:'#DivUser',
rowNum:10,
cellEdit: true,
cellsubmit: 'remote',
cellurl: 'Adminuser',
colModel: [{name:'Id', editable:false, width:50},
{name:'Login', editable:false, width:150},
{name:'Nom', editable:true, width:200},
{name:'Prénom', editable:true, width:200},
{name:'Rôle', editable:true, width:80, edittype:'select',
editoptions: { multiple: false, value:{ADMIN:'ADMIN',GUEST:'GUEST'}}},
{name:'Email', editable:true, width:200}],
beforeSubmitCell: function(rowid, celname, value, iRow, iCol) {
var rowData = jQuery(this).getRowData(rowid);
var idUser= rowData['Id'];// On récupère l'Id du user en cours d'édition
return {idUser:idUser}; }
});
导航:
$("#TabUser").navGrid('#DivUser',
{edit:false,add:false,del:true,search:false},{}, {},
{width:500, url:'Adminuser',
reloadAfterSubmit:true,
onclickSubmit: function(param){
var sr = jQuery('#TabUser').getGridParam('selrow');
var idUser = jQuery('#TabUser').getCell(sr,'Id');
return {idUser:idUser}; },
afterSubmit: function(reponse, data) {
$("#TabUser").trigger('reloadGrid');
$("#eData").click(); // clic sur "Annuler"
return [true,"Supression réussie"];
}
});
“响应”和“数据”的值是什么? 如何重新加载网格?
使用url'Adminuser'(用java编写)在数据库中有效删除该行。
答案 0 :(得分:1)
我认为你的真正问题不是在删除行后重新加载网格。将由tableToGrid
创建的网格具有datatype: 'local'
,并且不需要从服务器重新加载数据。
你真正的问题是jqGrid 3.4.1中的错误,它在jqGrid的代码中被修复(参见here)。因此删除的行不会从网格中删除。问题是the line代码:
toarr = postdata.split(",");
错误是postdata
已经是数组而不是字符串。因此,在行中会出现异常,并且不会执行从网格中删除行的下一行。要解决此问题,您可以使用github中jqGrid代码的最新版本,也可以修改上述行(jquery.jqGrid.src.js
中的行号为8282)
toarr = postdata;
或下载jquery.jqGrid.src.js
here的修改版本。之后,您可以从代码中移除$("#TabUser").trigger('reloadGrid');
行,所有内容都能正常运行:请参阅the demo。
要在HTTP响应中{@ 3}}的行“删除”中报告服务器中的错误信息。您还可以定义set error status code回调,该回调将服务器响应重新格式化为您要显示为错误消息的HTML代码片段。有关其他信息,请参阅errorTextFormat,the answer或this one。