首页 > 代码库 > easyui datagrid 绑定从后台得到的复杂的特殊数据结构

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‘, width: 100, align: ‘center‘ },                    { title: ‘UserName‘, field: ‘UserName‘, width: 100, align: ‘center‘ }                ]],                loadFilter: function (data) {                    return data.data;                }            });        });     </script>

 

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