jqgrid表单编辑:删除行后的操作问题

时间:2012-03-18 18:09:10

标签: jquery jqgrid form-editing

经过长时间的搜索,我成功删除了一个带有表单编辑的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编写)在数据库中有效删除该行。

1 个答案:

答案 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代码片段。有关其他信息,请参阅errorTextFormatthe answerthis one