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

QQ登录

只需一步,快速开始

查看: 1489|回复: 9

[处理中3] 主表索引改变后会触发计算关系,主表中所有的值全被改变

[复制链接]

3

主题

7

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
发表于 2017-12-19 17:39:33 | 显示全部楼层 |阅读模式
在主从表中的主表中给总金额和总量直接添加计算关系,在浏览器中,当索引改变时,总金额和总量的所有数据都相同,怎么才能让数据不同?
浏览器显示如下:
360桌面截图20171219173405.jpg
360桌面截图20171219173333.jpg
360桌面截图20171219171843.jpg
发表于 2017-12-19 18:30:21 | 显示全部楼层
计算规则可以绑定一个自定义函数实现
http://docs.wex5.com/wex5-ui-question-list-2178/
debugger调试代码看下  数据修改后  有没有重新触发方法??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

7

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2017-12-20 08:59:04 | 显示全部楼层
liangyongfei 发表于 2017-12-19 18:30
计算规则可以绑定一个自定义函数实现
http://docs.wex5.com/wex5-ui-question-list-2178/
debugger调试代码 ...

不绑定自定义函数,直接在计算关系中对某一列求和,可以实现吗?
回复 支持 反对

使用道具 举报

发表于 2017-12-20 09:53:19 | 显示全部楼层
李会 发表于 2017-12-20 08:59
不绑定自定义函数,直接在计算关系中对某一列求和,可以实现吗?

你先试试绑定自定义函数,能否实现??
如果自定义函数中使用data.sum 求和 ,  原则上直接写表达式也可以做到的!
不过js方法可以debugger调试看代码,很方便的,表达式如果哪儿写错了,不知道原因为何不生效。。
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

7

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2017-12-20 11:07:35 | 显示全部楼层
liangyongfei 发表于 2017-12-20 09:53
你先试试绑定自定义函数,能否实现??
如果自定义函数中使用data.sum 求和 ,  原则上直接写表达式也可 ...
我通过自定义函数的方式,实现的效果跟直接在数据组件上设置计算规则的效果一样

代码如下:
  1. // 根据当前行的值进行一些计算,返回结果
  2.         Model.prototype.getValue = function(row) {
  3.                 debugger;

  4.                 var mainData = this.comp("mainData");
  5.                 var rowid = mainData.getRowID(row);

  6.                 var detailData = this.comp("detailData");
  7.                 var value = detailData.sum("fNumberAll");

  8.                 return value;
  9.         };
复制代码
规则设置如下:
360桌面截图20171220110054.jpg


浏览器显示如下:
360桌面截图20171220110616.jpg 360桌面截图20171220110557.jpg

回复 支持 反对

使用道具 举报

发表于 2017-12-20 11:22:30 | 显示全部楼层
李会 发表于 2017-12-20 11:07
我通过自定义函数的方式,实现的效果跟直接在数据组件上设置计算规则的效果一样

代码如下:

你参考下API 文档的案例吧

比如:

  1.   //统计mainData中fName姓“李”的年龄fAge合计
  2. var sum = this.comp('mainData').sum('fAge',function(ev){
  3.             var v = ev.source.getValue('fName',ev.row);
  4.             return v.indexOf('李')==0;
  5.     });
复制代码


sum方法 里面 可以传递一个回调函数,只统计符合条件行的值!!而不是统计所有行值
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

7

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2017-12-20 14:26:00 | 显示全部楼层
liangyongfei 发表于 2017-12-20 11:22
你参考下API 文档的案例吧

比如:


请问 如何将取到的rowid放到indexOf()方法中作为索引使用

360桌面截图20171220142424.jpg

回复 支持 反对

使用道具 举报

发表于 2017-12-20 14:33:01 | 显示全部楼层
李会 发表于 2017-12-20 14:26
请问 如何将取到的rowid放到indexOf()方法中作为索引使用

你没理解他的意思!  你是根据主表统计从表数据
里面的条件应该是  根据从表的外键和 主表的主键对比才对啊!
获得从表外键字段(比如叫做fMainID)

var v = ev.source.getValue('fMainID',ev.row);
return v==rowid
这样写才对吧?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

7

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2017-12-20 15:12:31 | 显示全部楼层
代码我已经按照你的方法改过了,现在的情况是:在浏览器上当点击哪行,哪行的数量才会计算,否则全部显示为0代码显示如下:
  1.         // 根据当前行的值进行一些计算,返回结果
  2.     Model.prototype.getValue = function(row) {
  3.                 debugger;
  4.                
  5.                 var mainData = this.comp("mainData");
  6.                 var rowid = mainData.getRowID(row);

  7.                 var detailData = this.comp("detailData");
  8.                
  9.                 //统计mainData中fName姓“李”的年龄fAge合计
  10.                 var sum = detailData.sum('fNumberAll', function(ev) {
  11.                         var v = ev.source.getValue('fmainID', ev.row);
  12.                         return v == rowid;
  13.                 });
  14.        
  15.                 var value = sum;
  16.                 return value;
  17.         };
复制代码

浏览器显示如下:

360桌面截图20171220150832.jpg

360桌面截图20171220150810.jpg



回复 支持 反对

使用道具 举报

发表于 2017-12-20 15:41:13 | 显示全部楼层
李会 发表于 2017-12-20 15:12
代码我已经按照你的方法改过了,现在的情况是:在浏览器上当点击哪行,哪行的数量才会计算,否则全部显示为0 ...

你debugger调试一下吧!   传过来的row  对象难道不正确吗??
其实获取行id 直接使用row.val('fID')  就可以的,不用使用mainData去获取!

是不是因为detailData 数据是后加载的,导致刚刚初始化的时候,算的值不存在??  你把detailData放在前边,保证  数据先加载后再加载
mainData

调整顺序试试!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 16:17 , Processed in 0.084411 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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