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

时间:2011-07-22 14:25:05

标签: javascript jquery jqgrid data-manipulation

我在这里跟踪本教程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 个答案:

答案 0 :(得分:6)

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

接下来,我建议您使用navigator工具栏,而不是在网格外部创建按钮。如果您可以使用

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

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

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

(参见here)或同时兼顾两种方式。

您必须以任何方式定义editGridRow方法(prmEdit)的选项。重要的是要知道只有在服务器响应不包含afterSubmit时才会调用error HTTP status code。因此,您应该使用errorTextFormat来解码错误服务器响应。您可以使用afterSubmit事件处理程序显示状态消息。

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

enter image description here

状态消息在3秒内消失:

enter image description here

您将找到相应的演示here

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