找回密码
 立即注册

QQ登录

只需一步,快速开始

Eric.Liang 讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-5-8 12:22  /   查看:18880  /  回复:13
本帖最后由 Eric.Liang 于 2018-10-19 11:37 编辑

近期有用户在问这样一个问题,怎样可以在子表中循环将ODATA获取的单价赋值给绑定字段。
场景是这样的,有一个订单表,销售订单表和商品价目表,订单表和销售订单表是主子表关系,在填写销售订单表的时候需要选择商品自动带出单价,并计算合计,因为物品的单价有可能随时间的变化而变化,但是已完成的订单的单价应该是录入订单时的原始单价,因此需要在订单详情表中对该单价进行保存。

这样的话在活字格中有一个问题,如果单价单元格使用ODATA公式通过商品ID获取对应的价格的话,是不能在这个单元格上去绑定子表的单价字段的。因为如果某一个单元格中既有ODATA公式又有绑定字段,页面在打开的时候活字格是没有办法判断应该怎么取值。

因此,添加和更改页面需要区分开来。
添加页面使用ODATA公式,点击添加按钮时将ODATA公式获取的单价循环赋值给相应的绑定字段。
更改页面只需要绑定数据库中的字段进行显示即可。



先给大家看看效果:
单价循环赋值.gif

在之前的章节中大家应该也都看到过,主子表设置完成后只需要添加更新主表的数据,子表数据会自动添加和更新。因此我们需要使用循环命令+表格设置命令将子表中每一行ODATA获取的单价赋值给子表的单价绑定字段,在提交主表数据后,子表的单价也会被提交。

具体操作如下:
针对数据表结构的设置在这里我就不做详细讲解了。如果不是很清楚的话你可以看看这里:http://gcdn.gcpowertools.com.cn/ ... 6orderby%3Ddateline

比较特殊的就是订单表的添加页面,如下图:
blob852110290.png

你会发现在里,我使用ROW(A1)函数去计算序号,有两个单价的单元格,ODATA获取的单价显示在页面上,数据绑定的单价列隐藏。

在选择完商品之后,自动计算单价。填写数据,自动计算合计。

当子表都填写完了就进入了最重要的环节。怎么把每一行ODATA获取的单价赋值给绑定单价字段。在这里,需要使用循环命令+表格设置命令。

1.循环命令,循环子表所有行。
blob169400633.png

2.表格命令。需要更新表格中的数据,更新记录为表格中满足特定条件的行,添加条件,序号字段的值等于当前循环到的该行的序号,这个地方必须使用唯一的字段(序号),确保每次循环获取的都是当前一行。循环结束后,则每个单价都被赋值到对应序号的单价绑定字段中。
blob69488219.png

3.数据表操作命令添加主表数据,同时自动添加子表数据。添加完成后执行浏览器页面跳转。

只要单价可以正常添加到数据库中,更改页面通过绑定字段获取的单价也就没有其他问题。

工程文件见附件。

循环 表格设置赋值单价.fgcc

530.14 KB, 下载次数: 1448

13 个回复

正序浏览
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-7-16 11:45:37
14#
meteor 发表于 2018-7-16 09:58
哦,我仔细看了下,应该是我对您所描述的业务场景理解有误。这个案例应该是说每次要修改或者新增的时候都 ...

按照你的需求是不是可以在子表中添加一个客户确认价格。客户确认价格不能被修改。但是有一点,表格无法设置为某几行不允许编辑,只能设置为全部允许编辑或者全部不允许编辑。如果还有什么问题,请在求助中心版块下发帖,谢谢
回复 使用道具 举报
meteor
金牌服务用户   /  发表于:2018-7-16 09:58:32
13#
Eric.Liang 发表于 2018-7-16 09:06
以上的DEMO本身在页面上ODATA和绑定字段就是共存的。在添加和更改的时候通过循环命令和表格操作命令将ODA ...

哦,我仔细看了下,应该是我对您所描述的业务场景理解有误。这个案例应该是说每次要修改或者新增的时候都是按照价目表的最新价格,但是保存了就按照保存后的价格了。

我理解的场景是:商品价目表保存的是商品的标准价格,但是每次下单的时候,销售根据实际情况价格有所变动,所以新选的商品都会默认把最新的标准价格带过来,但是在这条单据保存前都可以直接修改这个价格。但是修改的价格仅在本订单中保存。
同样,比如一张订单做完了,客户说需要加个商品,这时候修改这张订单,添加入新的产品,但是之前客人确认的价格是不能去更新的。
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-7-16 09:06:26
12#
meteor 发表于 2018-7-15 15:38
对这个案例场景有个疑问哦,就是要将添和修改页面分离,那么要是修改时还要继续添加明细产品呢?从感觉上, ...

以上的DEMO本身在页面上ODATA和绑定字段就是共存的。在添加和更改的时候通过循环命令和表格操作命令将ODATA的值赋值给绑定字段,然后保存。如果你要把添加更改放到一个页面,做个判断就行。
回复 使用道具 举报
meteor
金牌服务用户   /  发表于:2018-7-15 15:47:35
11#
meteor 发表于 2018-7-15 15:38
对这个案例场景有个疑问哦,就是要将添和修改页面分离,那么要是修改时还要继续添加明细产品呢?从感觉上, ...

比如es系列的产品中,这个类似的场景是通过提数公式解决,其实就是类似odata的查询,但是提数公式仅仅是触发时对单元格完成一次写值,并不影响绑定属性。当然,产品定位不同,不能把功能都进行强行比对。但是在这个场景,感觉这样的方式对用户会更便捷,至少不需要去分离出两个页面。其实个人建议活字格可以借鉴提数公式这样的概念做个类似的插件,或者完善odata的作用域,这样的场景就很好解决了。对了,说到odata,其实如果通过js调用odata来对单元格赋值,就已经解决了吧?所以,理论上应该是可以对odata的功能完善到不需要代码的,对吧?
回复 使用道具 举报
meteor
金牌服务用户   /  发表于:2018-7-15 15:38:47
10#
对这个案例场景有个疑问哦,就是要将添和修改页面分离,那么要是修改时还要继续添加明细产品呢?从感觉上,odata和绑定字段最好是能想办法共存会比较好
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-7-10 15:49:34
9#
settings0 发表于 2018-7-10 09:10
我点击修改,为何后面的总金额不发生功能变化呢。

你把你的demo在求助中心发个帖子我看下。
回复 使用道具 举报
settings0
高级会员   /  发表于:2018-7-10 09:10:53
8#
image.png69276732.png 我点击修改,为何后面的总金额不发生功能变化呢。
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-5-14 10:26:31
7#
504146555 发表于 2018-5-12 21:17
先赞一个,下面要好好学习一下!

回复 使用道具 举报
504146555
金牌服务用户   /  发表于:2018-5-12 21:17:45
6#
先赞一个,下面要好好学习一下!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部