`

jqgrid保存或者删除成功后调用自定义方法的解决方法

 
阅读更多
参考: http://www.debugease.com/javascript/200760.html

开始处理方式
1. 工具栏方式, 定义navGrid变量的时候,
下面配置删除后处理配置:
{
                    ......
                    del: true,
                    delicon: 'icon-trash red',
                    ......
}
......
{
                    //delete record form
                    recreateForm: true,
                    /*beforeShowForm: function (e) {
                        var form = $(e[0]);
                        if (form.data('styled')) return false;
                        form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />');
                        $.GridUtils.style_delete_form(form);
                        form.data('styled', true);
                    },*/
                    beforeShowForm: $.GridUtils.beforeDeleteCallback,
                    afterSubmit:function(data,postdata){
                        alert("afterSubmit");
                        return [true,""]; //返回0表示正常
                    },
                    afterComplete:function(data,postdata){
                        alert("afterComplete");
                        //这里不用返回
                    }
                }


2. 如果是colModel里面配置:
{
                name: 'myac', index: '', width: 80, fixed: true, sortable: false, resize: false,
                formatter: 'actions',
                formatoptions: {
                    keys: true,
                    delOptions: {recreateForm: true, beforeShowForm: $.GridUtils.beforeDeleteCallback,afterSubmit:function(data,postdata){
                        alert("afterSubmit1");
                        return [true,""]; //返回0表示正常
                    },
                        afterComplete:function(data,postdata){
                            alert("afterComplete1");
                            //这里不用返回
                        }},
                    editformbutton:true, editOptions:{recreateForm: true, beforeShowForm:$.GridUtils.beforeEditCallback,afterShowForm:$.GridUtils.afterEditCallback}
                }
            }


非改源码扩展
1. 在初始化表格的配置加上自定义的方法
afterSubmit:function(data,postdata){
            alert("afterSubmit");
            return [true,""];//原样返回.
        },
        afterComplete:function(data,postdata){
            alert("afterComplete");
        }


2. 重写事件后要处理的方法
function afterSubmitCallback(data,postdata){
            //用于提交事件完成后处理
            alert("afterSubmitCallback");
            var $t=this;
            if($.isFunction($t.p.afterSubmit)){
                return $t.p.afterSubmit(data,postdata);
            }else{
                return [true,""];//原样返回.
            }

        }
function afterCompleteCallback(data,postdata){
            //用于提交事件完成后处理
            alert("afterCompleteCallback");
            var $t=this;
            if($.isFunction($t.p.afterComplete)){
                $t.p.afterComplete(data,postdata);
            }
        }


3. 改变调用的地方, 让他们调用同一处地方
工具条
{
                    //delete record form
                    recreateForm: true,
                    /*beforeShowForm: function (e) {
                        var form = $(e[0]);
                        if (form.data('styled')) return false;
                        form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />');
                        $.GridUtils.style_delete_form(form);
                        form.data('styled', true);
                    },*/
                    beforeShowForm: $.GridUtils.beforeDeleteCallback,
                    afterSubmit: afterSubmitCallback,
                    afterComplete:afterCompleteCallback
                }

colModel:
{
                name: 'myac', index: '', width: 80, fixed: true, sortable: false, resize: false,
                formatter: 'actions',
                formatoptions: {
                    keys: true,
                    delOptions: {recreateForm: true, beforeShowForm: $.GridUtils.beforeDeleteCallback,afterSubmit: afterSubmitCallback,
                        afterComplete:afterSubmitCallback},
                    editformbutton:true, editOptions:{recreateForm: true, beforeShowForm:$.GridUtils.beforeEditCallback,afterShowForm:$.GridUtils.afterEditCallback,afterSubmit: afterSubmitCallback,
                        afterComplete:afterCompleteCallback}
                }
            }


如果后台要返回自己定义的成功或者错误信息, 那又如何显示呢?
1. controller返回一个对象:
@RequestMapping(value = "/saveGrid.do")
    @ResponseBody
    public ControllerContext saveGrid(HttpServletRequest request, @RequestBody Map<String,Object> params) {
        System.out.println(JSONUtil.toJSONString(params));

        ControllerContext context=new ControllerContext();
        context.addMessage("保存成功.");
        context.setSuccess(true);
        context.setStatus(168);
        return context;
    }

2. 这个返回的信息保存在:data.responseJSON, data.responseText里面, 可以自己使用.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics