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

QQ登录

只需一步,快速开始

查看: 3959|回复: 0

[分享] 当主表的fID为int类型,而从表的绑定关系fFID为String时的坑

[复制链接]

851

主题

2560

帖子

5714

积分

论坛元老

Rank: 8Rank: 8

积分
5714
QQ
发表于 2019-7-18 16:57:55 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
研究了一下午,终于搞明白了。下面分享一下经历,大家可借鉴。
情景描述:
页面上放了两个data,mainData  、 detailData 。mainData的fID是int类型,因为业务要求数据库做了自增长设置,detailData里的fFID为String类型。设置了绑定关系后,detailData新增数据时,count显示为0,不管new多少条。保存的时候,可以看到数据库里的确增加了相应条数的数据,默认值都有。再次打开页面的时候,控制台里可以看到查询语句被执行,绑定detailData的grid组件就是不显示内容。通过调试发现detailData.count()依然是0 。通过detailData.toJson的时候,可以看到行数据。后来把mainData的fID设置成String,就一切正常了。
结论:
当一个Data指定了主表关系的时候,其绑定的关系类型一定要保持一致。当主表index发生改变的时候,从数组件会自动触发查询动作,数据是可以被查上来。但从组件不认为查上来的数据是对应当前主表数据的从数据,这个判断过程是采用了类型+值的比较。既JS里的 === 关系表达式。

个人认为这里不应该使用 === 表达式判断,而应该是 ==  ,主从表关联,判断值相等就可以了。
这只是个人的片面观点,可能起步官方考虑的更多。

这里面还存在着一个缺陷,从数据组件新增的时候,会报错。因为主的fID是int类型  ,而从的fFID是String类型。

个人的解决方案:解除主从Data绑定,新增的时候手动为fFID设置一个值,查询的时候,手动为从Data增加过滤 条件 。


评分

参与人数 1威望 +20 收起 理由
Masion + 20 神马都是浮云

查看全部评分

企业应用定制开发。X5开发者。
手机:15065117236
QQ:87356667
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 03:09 , Processed in 0.071421 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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