起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1124|回复: 4

[结贴] 如何对dataTables里的数据进行变换?

[复制链接]

2

主题

4

帖子

22

积分

新手上路

Rank: 1

积分
22
QQ
发表于 2016-8-19 18:51:24 | 显示全部楼层 |阅读模式
版本: BeX5V3.5 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
对X5的了解还不深入,有可能问得仓促了。有大侠路过指正一下,谢谢!
一般数据库设计时,状态值会用一些0,1,2之类的代替(一般系统里会用枚举实现吧)。然后界面显示的时候对记录中的值进行变换处理。
在例子中找了半天,目前没有看到在列表中对数据进行变换处理,查了一下,好像状态什么的基本都是直接写入数据库中的,这个不会是我理解错了吧?
然后我通过这两天的学习,粗浅了解下,觉得以数据绑定的方式可以实现。
实现方式:
比如数据库中设计某列  fEnable char(1) ( 1=有效,0=无效)
我用数据绑定试了一下,在数据对象中加了一个calc计算列 calcEnable,然后 加了个计算规则:val('fEnable')==1?'有效':'无效'
然后在设计器里没找到往里加列的方法,就手动往代码里直接加一个column
<column name="calcEnable">
同时把原先的fEnable删除或者隐藏,这样,就可以显示出有效/无效了。
问题出来了:
1,我往calcEnable的属性上设label 为 label('fEnable') 不能取得 fEnable 的标签名称
     (会直接显示  label('fEnable')  这些文字)
2,点击这个列无法排序了
3,虽然我还不清楚这个框架的多语言实现方式(据说是编译的时候会绑定),但是以这个计算规则来实现文字变换,将来隐患应该很大

如果是在后台把0和1变换后传过来,感觉又偏离了数据与表现分离的原则。
求更好的解决方案。

31

主题

1856

帖子

3070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3070
发表于 2016-8-20 10:37:09 | 显示全部楼层
http://docs.wex5.com/%E5%8F%AA%E ... %E5%90%8D%E7%A7%B0/

可参考下这个。

平台自带的表是冗余存储,也就是显示名称也存储了,好处就是查询简单快,缺点就是冗余的维护
回复 支持 反对

使用道具 举报

2

主题

4

帖子

22

积分

新手上路

Rank: 1

积分
22
QQ
 楼主| 发表于 2016-8-22 10:05:16 | 显示全部楼层
wsh 发表于 2016-8-20 10:37
http://docs.wex5.com/%E5%8F%AA%E5%AD%98%E5%82%A8id%E4%B8%8D%E5%86%97%E4%BD%99%E5%AD%98%E5%82%A8%E5%9 ...

多谢回答,
这种是通过把code与name存到数据库中,好像系统中的sa_code表就是做这个用的。
从另一个角度可以解决这个数据变换的需求,但也就是说这个是在服务器端实现了数据变换。
有没有在前端实现的方案呢?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2016-8-22 11:58:56 | 显示全部楼层
1.label('fEnable')改为ref('fEnable')
2.或者可以在dataTables的onCellRender中实现,判断列和列值设置event.html
http://bbs.wex5.com/forum.php?mo ... 3&pid=165289828
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

2

主题

4

帖子

22

积分

新手上路

Rank: 1

积分
22
QQ
 楼主| 发表于 2016-8-23 11:08:45 | 显示全部楼层
本帖最后由 quainty 于 2016-8-23 11:11 编辑
jishuang 发表于 2016-8-22 11:58
1.label('fEnable')改为ref('fEnable')
2.或者可以在dataTables的onCellRender中实现,判断列和列值设置eve ...

label改成ref也一样,会直接显示成:ref('fEnable')
不过,用这个Render的确可以,多谢!

附上代码,给后人参照:
    Model.prototype.grid1CellRender = function(event) {
        if (event.colName == 'fEnable') {
            event.html = (event.colVal == '1' ? '有效':'无效');
        }
    };

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-7 02:57 , Processed in 0.061680 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表