jQuery jqGrid 在编辑行完成时显示消息

IT技术 javascript jquery jqgrid data-manipulation
2021-01-25 03:34:40

我在这里关注本教程http://www.trirand.com/blog/jqgrid/jqgrid.html在 LiveDataManipulation->EditRow

我的网格从脚本接收数据a.php之后用户可以通过jqGrid修改这个数据。修改数据后的 jqGrid 会将数据发送到B.php更新我的数据库的脚本,并返回“一切顺利”之类的响应消息。
我希望此响应在页面上的某处被提醒或显示给用户。
阅读教程和这里http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing我认为我必须使用afterSubmit选项,但我不明白如何在编辑面板上打印结果.

我已经写了:

$("#editImpresa").click(function(){
var gr = jQuery("#tabImprese").jqGrid('getGridParam','selrow');
if( gr != null ) jQuery("#tabImprese").jqGrid('editGridRow',gr,{
    height:690,
    width:500,
    closeAfterEdit : true,
    reloadAfterSubmit:false,
    afterSubmit: function(response,postdata){ 
       if(response.responseText=="ok")
            success=true;
        else success = false;

        return [success,response.responseText] 
    }
});

我该怎么做?谢谢。

1个回答

首先是在closeAfterEdit:true服务器成功响应后关闭编辑表单的选项您应该将设置更改为默认值closeAfterEdit:false,以便能够显示任何内容。

接下来,我建议您使用导航器工具栏,而不是在网格之外创建按钮。在这种情况下,您可以使用

var grid = jQuery("#tabImprese");
grid.jqGrid('navGrid','#pager', {add:false,del:false,search:false}, prmEdit);

一个更好的选择是使用ondblClickRow事件处理程序

ondblClickRow: function(rowid) {
    $(this).jqGrid('editGridRow',rowid,prmEdit);
}

(参见此处)或同时使用两种方式。

无论如何,您都必须定义editGridRow方法(prmEdit的选项重要的是要知道只有在服务器响应不包含错误 HTTP 状态代码时才会调用afterSubmit所以你应该使用errorTextFormat来解码错误服务器响应。可用于显示状态消息afterSubmit事件处理程序。

在演示中,我仅errorTextFormat用于演示状态和错误消息的显示:

在此处输入图片说明

状态消息在 3 秒后消失:

在此处输入图片说明

您将在此处找到相应的演示

在实际示例中,您将导致将编写状态消息的代码放置在afterSubmit事件处理程序中,并将返回错误消息的代码放置在errorTextFormat 中

如果编辑表单的顶部不可见,此解决方案不会显示消息。要在演示中重现,请将编辑窗口高度调整为小,向下滚动并按提交。消息不会出现:它们呈现在不可见的编辑表单的顶部。如何始终显示消息?
2021-03-15 03:34:40