加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

dojo小例子(14)对提供给grid显示的数据进行预处理

发布时间:2020-12-16 21:27:36 所属栏目:百科 来源:网络整理
导读:有时我们从后台获取的数据不一定能满足页面显示的需求,比如后台数据中某个字段值是“1/0”,但是显示时我们希望显示为“是/否”。这就需要对数据进行转换,也就是预处理。 可以有两种方法,假设使用场景是JsonRest+ObjectStore组合为grid提供懒加载数据。

有时我们从后台获取的数据不一定能满足页面显示的需求,比如后台数据中某个字段值是“1/0”,但是显示时我们希望显示为“是/否”。这就需要对数据进行转换,也就是预处理。

可以有两种方法,假设使用场景是JsonRest+ObjectStore组合为grid提供懒加载数据。

方法一、对store中的数据进行预处理。

    var json = new JsonRest({
        target: url
    });
    var store = new ObjectStore({objectStore: json});
    store.onFetch = function(results){
        results.forEach(function(item){
            // 在这里预处理数据
            if(item.admin == '1'){
               item.admin = '是';
            }else{
               item.admin = '否';
            }
        });
    };

方法二、在grid的structure中预处理。

    var layout = [
    	[{
    		'name': 'Column 1','field': 'id','width': '100px'
    	},{
    		'name': 'Column 2','field': 'admin','width': '100px',get: function(colIndex,item) {
    			// processing data
    			if (item.admin == '1') {
    				return '是';
    			} else {
    				return '否';
    			}
    		}
    	},{
    		'name': 'Column 3','field': 'desc','width': '200px'
    	}]
    ];
另外,遇到带内部对象的json数据,例如:

{"name":"陈","age""24""phone":{"company""123""home""456""private""789"}}

我们想把内部对象的属性company显示到grid,如果这样写'field': 'phone.company'肯定行不通,所以也适合用上面提到的两种方法之一进行转换。

假如采用第二种方法:

        {
    		'name': 'Column 2','field': 'phone.company',item) {
    			// processing data
    			return item.phone.company;
    		}
    	}

2014-5-13更新:

采用第二种方法时,对grid刷新会不起作用,就是由于get方法导致。代码如下:

Grid.resize();
Grid._refresh();
目前原因不清楚。所以如果需要用到grid刷新,还是采用第一种方式

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读