首页 > 代码库 > 让datagrid中的columns属性支持对象的子属性(类似user.userName)的方法

让datagrid中的columns属性支持对象的子属性(类似user.userName)的方法

前台的datagrid的columns属性如下:(请看红色字体部分)

columns : [ [ {  //每列上的属性、名称设置

            title : ‘编号‘,
            field : ‘userInfoId‘,
            width : 100,
            sortable : true
        },{
            title : ‘姓名‘,
            field : ‘userInfoName‘,
            width : 100,
            sortable : true
        },{
            title : ‘密码‘,
            field : ‘userInfoPassword‘,
            width : 100    
        },{
            title : ‘角色‘,
            field : ‘tbRole‘,
            formatter : function(value,row,index){
                if (row.tbRole){
                    return row.tbRole.roleName;
                } else {
                    return value;
                }},

            width : 100    

        }] ]

说明: 我的后台传给前台datagrid的数据有total和rows,它们的格式如下:

技术分享

rows具体格式如下:
技术分享


即rows里面的每个对象都有tbRights、tbRole、userInfoId、userInfoName、userInfoPassword这几个属性,而属性tbRole本是一个对象,里面有roleId、roleName、tbUserinfos这几个对象。现在需要把tbRole里面的roleName给显示出来,因为直接在field中这样写  fileld:"field:tbRole.roleName‘,这样在前台是显示出不来这一列的,因为fileld的格式不支持点操作符的用法。所以应该用easyui的api中的datagrid自带的一个格式化函数formatter(),formatter的具体说明请查阅api

{
            title : ‘角色‘,
            field : ‘tbRole‘,
            formatter : function(value,row,index){
                if (row.tbRole){
                    return row.tbRole.roleName;
                } else {
                    return value;
                }},

            width : 100    
        }


让datagrid中的columns属性支持对象的子属性(类似user.userName)的方法