保存,除了配置一个保存按钮,触发所有的保存动作外。主要是配置哪些格子需要保存,保存到什么字段。
前情提示:页面配置里有一个选项:是否允许编辑。这个选项只是会影响数据集或者记录,生成可以编辑的控件,还是生成仅显示的控件,而与最终的保存没有关系。
1.页面数据的保存选项
页面数据配置为可保存,那么保存时,该数据的字段都会被保存。
详情页面中,代表详情页的主数据记录的 it 会被默认设置为可保存,其他都需要手动设置。
配置页面数据保存保存(是):表示页面上展示的数据修改后,是否还要保存回数据库。是表示会回存。
我们试验一下就会发现,当 it 的保存属性被设置为 是 的时候,点击保存按钮,it 的所有的字段都会被保存。当设置为 否 的时候,修改保存无效。
2.数据表视图中定义字段的初值
有的字段的初值,可能是某些业务逻辑规定的,而不是使用者自行填写的。
例如客户表中, 联系人 应该是 当前用户, 提交时间 应该是 当前时间,未结货款 应该是 0 。可以通过在数据表视图中,定义字段的初值表达式来实现。
数据表定义初值
联系人:me.id
表示当前用户。
提交时间:Date.now()
表示当前时间。Date.today()表示当天
未结货款:0
表示初值为0。
性别:Dict.性别.男
表示 默认是男性。
PS:通过数据表定义字段初值可以影响所有添加该字段的页面,并且可以随时增补和修改。
3.较复杂的初值用法1:单价数量或者 查找商品的价格数量
订单表中的价格= 单价 * 数量。其中单价和数量是输入的,那么价格的初值应该设置为什么公式呢?
dynamic(it.单价) * dynamic(it.数量)
-
it.单价 :it.单价表示 单价字段。it.数量 表示 数量字段。
知识点: it 表示该表的当前记录。 -
dynamic(it.单价):在录入订单的界面中,it.单价 将会是一个输入框,用户可以随时输入和修改它的值,所以这里表示录入界面中,单价字段还是数量字段的值的改变,都会导致 价格 字段 的初值 动态变化。
知识点:dynamic 关键字,表示将会随着dynamic里面的值的改变而动态变化。
如果订单表没有 单价字段,而由商品字段,而价格由商品字段查找到的单价字段决定,该如何表示呢?
table.商品.findOne(table.商品.id==dynamic(It.商品)).单价 * dynamic(it.数量)
-
table.商品.findOne
:根据条件去 商品表 查找一条记录。 -
table.商品.id==dynamic(It.商品)
:筛选条件是 商品表的记录的id 等于 表单中 商品字段的动态值(也就是商品改变了,查找的条件也发生改变) - 整个公式就表示,根据商品动态的查找商品单价,再乘以 动态的 数量。
4.页面视图中修改字段的初值。(限于单个页面生效)
如果想让这些初值仅在单个页面生效,可以不在数据表视图中设置,而是在页面视图中设置。
例如 希望 客户编辑页面中, 联系人 的初值应该是当前用户。
那么可以在客户编辑页面中找到联系人的数据字段 =it.联系人(如果 客户记录 的数据名是xx,那么就是 = xx.联系人。
把单元格的值改为 =me.id
,然后在右侧的属性栏 -> 基本属性 -> 保存至 的公式里,填入 it.联系人
。
提示: 保存至属性表示这个格子的值最终要被存到哪个字段中。
例如上述示例,表示 me.id 这个格子的值,将被存储到 it 记录的联系人字段中( it 是 客户表的记录,所以最终是和其他it的字段一起,被存储到了客户表的 联系人字段里)。
同理 订单表的新建页面中:希望订单的价格是 根据商品查找到的动态单价*动态数量的话,可以把 it.价格 格子 的值改为:
=table.商品.findOne(table.商品.id==dynamic(It.商品)).单价 * dynamic(it.数量)
而保存至属性设置为 it.价格
。
4.格子的值保存到不同的表的多个字段。
例如 部门和下属的用户的 主子表中,如果不依靠模板和平台手动处理的时候。
部门的id,应该同时保存到 用户子表的部门字段中,表示这个用户是该部门的。
那么应该在 =it.id
(部门的id)格子的保存至公式中,写入 it.id | ds_用户.id
(ds_用户是子表的数据集)。
提示: 保存至属性中, | 表示并列的多个字段,表示单元格的值将被存入这些字段中。
网友评论