easyui datagrid子属性解决方案

李东全 发布于 2015/05/21 13:05
阅读 1K+
收藏 0

easyui 1.4.1之前的版本(貌似是从1.3.3开始),包含1.4.4

打开jquery.easyui.min.js文件

for(var i=0;i<_739.length;i++){
var _73e=_739[i];
var col=$(_738).datagrid("getColumnOption",_73e);
if(col){
//var _73f=_73c[_73e];//update by Mervin @2014-09-17
var _73f=eval("_73c['"+_73e.replace(/\./g,"']['")+"']");
var css=col.styler?(col.styler(_73f,_73c,_73b)||""):"";
var _740="";
var _741="";
if(typeof css=="string"){
_741=css;
}else{
if(css){
_740=css["class"]||"";
_741=css["style"]||"";
}

}

搜索“var css=col.styler?(col.styler(”,会定位到一行记录。

这条记录的上面应该是var _73f=_73c[_73e];

把这行记录替换成var _73f=eval("_73c['"+_73e.replace(/\./g,"']['")+"']");

注意里面的变量对应关系,ok!


之前在1.4.2刚发布的时候,发现有问题,一直没有时间弄,今天,又想弄弄它了。所以跟踪了一下问题,发现之前的这种改法出现问题了,好吧,源码我是看不懂改不了了,想想其他的解决方案吧。


功夫不负有心人,终于找到了其他的解决方案。在输出字段的时候,按照上面的修改已经可以打印子属性了。如下:

{field:'task1Vo.progress',title:'progress'} 

但在1.4.2版本开始就报错了。所以变换下思维,使用formatter 来打印。结果又发现报错了,rec.task1Vo有问题,那我就加上一个判断,来严谨一下逻辑。ok,搞定!

{
field : 'activityName',
title : '操作状态',
formatter : function(val, rec, index) {
//alert(rec.isDel);
if (rec.task1Vo) {
return rec.task1Vo.activityName;
}
},
fixed : true
} ] ]

加载中
返回顶部
顶部