Extjs前台渲染表中数据

      在数据库中,一般有关状态的数据存储的都是类似“0”或“1”的数字,而不是存储“生效”、“失效”之类的汉字。那么,从数据库里查出来的数据在前台显示给客户“0”这种数字显然是不合适的。那么,要如何做呢?

      在Extjs中,可以通过过滤器和渲染器的配合使用来实现渲染。

      通常,数据库中会有一张Code表,专门存储这种代码与字段的对应关系。

      首先,创建一个查出Code表数据的Store,以及一个用来存储代码的容器Store(这里以状态的代码为例)。

var codeStore = Ext.create('Ext.data.Store', {  
            storeId : 'codeStore',
            autoLoad : true,//true为自动加载
            loading : true,//自动加载时必须为true
            pageSize : 20,
            fields : [ 'CODE_ID_', 'PARENT_CODE_ID_', 'CATEGORY_', 'CODE_', 'NAME_', 'EXT_ATTR_1_', 'EXT_ATTR_2_', 'EXT_ATTR_3_', 'EXT_ATTR_4_', 'EXT_ATTR_5_', 'EXT_ATTR_6_', 'ORDER_' ],
            proxy : {
                url : 'selectCode.do',
                type : 'ajax',
                async : true,//false=同步
                actionMethods : {
                    read : 'POST'
                },
                extraParams : {},
                reader : {
                    type : 'json',
                    root : 'codeList',
                    totalProperty : 'total'
                }
            },
            listeners : {
                load : function(store, records, successful, eOpts) {
                    _init();//自动加载时必须调用
                }
            }
        });

        var STATUS_CodeStore = Ext.create('Ext.data.Store', {
            storeId : 'STATUS_CodeStore',
            autoLoad : false,
            fields : [ 'CODE_ID_', 'PARENT_CODE_ID_', 'CATEGORY_', 'CODE_', 'NAME_', 'EXT_ATTR_1_', 'EXT_ATTR_2_', 'EXT_ATTR_3_', 'EXT_ATTR_4_', 'EXT_ATTR_5_', 'EXT_ATTR_6_', 'ORDER_' ]

        });


然后,在初始化的_init()方法中,通过filter,用正则表达式来过滤Code表中名为“STATUS”的Code代码。

var codeStore = Ext.data.StoreManager.lookup('codeStore');//组装子代码数据
        var STATUS_CodeStore = Ext.data.StoreManager.lookup('STATUS_CodeStore');
        codeStore.filter('CATEGORY_', new RegExp('^STATUS$'));
        STATUS_CodeStore.add(codeStore.getRange());
        STATUS_CodeStore.insert(0, {});

        codeStore.clearFilter();


在显示数据的gridpanel中用renderer渲染器,将“CODE_”(代码)转换为“NAME_”,就可以实现数据的渲染了。

           {
                text : '<spring:message code="ASSET.STATUS_" />',
                dataIndex : 'STATUS_',
                style : 'text-align: center;',
                width : 80,
                renderer : function(value, metaData, record, rowIndex, colIndex, store, view) {
                    return (value != null && value != '') ? STATUS_CodeStore.findRecord('CODE_', new RegExp('^' + value + '$')).get('NAME_') : value;
                }
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值