easyui datagrid 绑定从后台得到的复杂的特殊数据结构

由于项目需要,从后台得到的数据统一为了类似{state:xxx,data:xxx,message:xxx}类型

但是easyui datagrid却只认{total:xxx,rows:xxx}。。。所以,整个前台都报错了,报错了就要解决,解决的过程中一共试过3中方式

1,datagrid不直接指定数据源,而是单独的ajax得到数据,然后在loadData绑进去,但是这样太麻烦了,不合理,显然不适用

2,重写ajax在得到数据的时候处理一下,网上找了段大神的代码就拿来用了,但是这样写灵活性不好,只能适用部分验证功能

(function ($) {
    var _ajax = $.ajax;
    $.ajax = function (opt) {
        var fn = {
            error: function (XMLHttpRequest, textStatus, errorThrown) { },
            success: function (data, textStatus) { }
        }
        if (opt.error) {
            fn.error = opt.error;
        }
        if (opt.success) {
            fn.success = opt.success;
        }
        var _opt = $.extend(opt, {
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                fn.error(XMLHttpRequest, textStatus, errorThrown);
            },
            success: function (data, textStatus, xhr) {
                fn.success(data.data, textStatus);
            }
        });
        _ajax(_opt);
    };
})(jQuery);

3,直接用easyui的数据表格属性loadFilter。。。。。(尼玛,折腾了2个小时才发现easyui自己就有数据过滤功能。。。。坑爹啊)

<script type="text/javascript">
        $(function () {
            $('#dgUser').datagrid({
                url: 'index.ashx',
                columns: [[
                    { title: 'UserID', field: 'UserID',  100, align: 'center' },
                    { title: 'UserName', field: 'UserName',  100, align: 'center' }
                ]],
                loadFilter: function (data) {
                    return data.data;
                }
            });
        }); 
    </script>
原文地址:https://www.cnblogs.com/luludongxu/p/4213756.html