1

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

4

1 回答 1

1

我认为您真正的问题不是在删除行后重新加载网格。将通过tableToGrid拥有datatype: 'local'和重新加载来自服务器的数据创建的网格不需要。

您真正的问题是 jqGrid 3.4.1 中的错误,该错误已在 jqGrid 的代码中修复(参见此处)。所以删除的行不会从网格中删除。问题是代码

toarr = postdata.split(",");

错误是postdata已经是数组而不是字符串。因此,在该行中出现异常,并且从网格中删除该行的下一行将不会被执行。要解决此问题,您可以使用来自github的最新版本的 jqGrid 代码,或者将上面的行(它在 8282 中的行号jquery.jqGrid.src.js)修改为

toarr = postdata;

jquery.jqGrid.src.js 或者在这里下载修改版。之后,您可以从代码中删除该行,$("#TabUser").trigger('reloadGrid');一切都会正常工作:请参阅演示

要在行的“删除”中报告来自服务器的错误信息,您只需在 HTTP 响应中设置错误状态代码。您还可以定义errorTextFormat回调,它将服务器响应重新格式化为要显示为错误消息的 HTML 代码片段。有关其他信息,请参阅答案这个这个

于 2012-03-19T17:54:18.793 回答