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

QQ登录

只需一步,快速开始

查看: 9621|回复: 10

[结贴] 刷新数据时,由于计算规则导致保存按钮常亮,如何解决

[复制链接]

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
发表于 2017-4-1 09:10:04 | 显示全部楼层 |阅读模式
版本: 其它(帖子中说明) 小版本号:
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 8 浏览器: Chrome
BEX5V3.6

问题描述:  BIZDATA 组建中对应的概念有3个属性A 、B、 C,对属性  A  设置了计算规则,规则是  A的值  是  属性B与属性C的乘积,在界面上,BIZDATA组件的数据以GRID 网格呈现,并且有  添加     删除    刷新    保存    操作,问题来了:刷新或者是页面加载后,保存按钮一直是常亮状态!

分析:刷新时页面加载数据,属性A的计算规则需要计算数据,导致数据变动,触发保存按钮!!!  
           可是计算后的数据与原来的数据是一样的,没有发生变化呀,为什么有值变动呢?

请问如何解决这个问题?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2017-4-1 13:45:59 | 显示全部楼层
A、B、C是计算字段还是概念中存在的字段?

本地测试A是计算关系没问题
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2017-4-1 14:44:31 | 显示全部楼层
jishuang 发表于 2017-4-1 13:45
A、B、C是计算字段还是概念中存在的字段?

本地测试A是计算关系没问题

A、B、C 都是概念中存在的字段
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2017-4-1 15:58:12 | 显示全部楼层
如果A字段数据库中本来的值就是B与C的乘机刷新数据数据没有改变保存按钮时不会变的

如果A字段数据库中本来没值那么刷新数据保存按钮时是变的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2017-4-1 17:35:03 | 显示全部楼层
jishuang 发表于 2017-4-1 15:58
如果A字段数据库中本来的值就是B与C的乘机刷新数据数据没有改变保存按钮时不会变的

如果A字段数据库中本来 ...

你没解决我的问题!
我的需求很简单,就是一张表,3个字段,数量  单价  和  合计,都是数字类型的。都是必填字段,数量和单价手动输入,合计为自动计算出,是数量和单价的乘积。

第一种解决方案:在页面的BIZDATA  里编辑规则,3个字段都设置必填,对合计字段添加 计算  规则 为:$row.val("fSL") * $row.val("fDJ"),见截图

1.png

打开页面,添加几条数据,由于添加的数据超出了每页显示的行数,所以保存后需要进行刷新页面,但是刷新页面后保存按钮常亮,应该是灰色的,不可操作!
2.png 3.png



第二种解决方案:在页面的BIZDATA  里编辑规则,3个字段都设置必填,然后在页面的网格中对应的数量字段和单价字段对应的input组建添加onChange 事件,如图


4.png

        var mainData = this.comp("mainData")
       
        var  fSL=event.value;
        var  fDJ=mainData.getValue('fDJ');

        mainData.setValue('fHJ', fSL * fDJ );
        };

//  单价变化
        Model.prototype.input3Change = function(event){
        var mainData = this.comp("mainData")
       
        var  fDJ=event.value;
        var  fSL=mainData.getValue('fSL');

        mainData.setValue('fHJ', fSL * fDJ );
        };


同样,在页面添加几条数据,保存后,刷新页面保存按钮依然是常亮的!件截图:
5.png 7.png



请问如何解决这种保存后刷新,保存按钮常亮的问题,测试源码件附件。 model.rar (9.06 KB, 下载次数: 302)
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2017-4-1 17:38:30 | 显示全部楼层
4楼发的就是本地测试刷新数据保存按钮就是灰色的,在data的onValueChange事件中看看那个字段变化的,变化前和变化后的值什么
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2017-4-1 18:13:16 | 显示全部楼层
jishuang 发表于 2017-4-1 17:38
4楼发的就是本地测试刷新数据保存按钮就是灰色的,在data的onValueChange事件中看看那个字段变化的,变化前 ...

你估计没看清我的需求,你用我的源码测试一下,添加几条记录后,保存后,然后刷新看看,只要刷新保存按钮肯定亮!
第一种解决方案中出现的问题我不知道如何解决,但第二种方案中的问题,我已经解决了:就是在INPUT 组件的值改变事件中进行判断,重新计算的合计值与原来的一样,就不用再更新了!
  因为刚刷新时,合计的值只有最新的值,由于刷新时需要执行INPUT组件的值改变事件,所以会使以前的旧值由原来的空附上值,所以会触发保存按钮。
        // 单价变化
        Model.prototype.input3Change = function(event) {
                var mainData = this.comp("mainData")

                var fDJ = event.value;
                var fSL = mainData.getValue('fSL');
                var old = mainData.getValue('fHJ');
                var newValue = fSL * fDJ;
                if (old != newValue) {
                        mainData.setValue('fHJ', newValue);
                }

        };
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2017-4-5 09:45:29 | 显示全部楼层
你好楼主,您反馈的这个现象通过验证是产品缺陷,我们已提交到产品组(内部编号:2017040500001),感谢楼主的支持与配合。
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2017-4-17 10:34:10 | 显示全部楼层
decimal存储在data中是string类型,而两个decial相乘的结果是数值类型,所以会修改行的状态;
解决方案: 在计算规则中,将结果转换成string类型, 例如 (row.val("f1") * row.val("f2")) + ""
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

44

主题

176

帖子

954

积分

高级会员

Rank: 4

积分
954
QQ
发表于 2017-6-8 13:34:50 | 显示全部楼层
jishuang 发表于 2017-4-17 10:34
decimal存储在data中是string类型,而两个decial相乘的结果是数值类型,所以会修改行的状态;
解决方案:  ...

我按照你那格式转成也不好使啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 18:02 , Processed in 0.127291 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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