我的应用中分别有2个表,普通表单:号码资源仓库(以下简称A表)和流程表单:资源分配(以下简称B表)。
我在B表中添加一个关联表单,关联A表,关联表单为多选模式。
问题一:我应该用什么样的方法获取到关联表单组件的每一项数据?
问题二:我怎么用这些多选的数据去更新A表的其他字段数据?
宜搭关联其它表单数据,支持的组件 只允许选择被关联表单内的单行文本、多行文本两个组件,其他组件不支持选择,例如数值、日期等。
要关联其他类型的表单的数据,需要加入一个隐藏的单行文本(记得勾选始终提交哦),通过公式赋值。
有时选择关联其他表单数据的时候选择不了字段,提示「暂无符合字段」 ,这个是因为被关联的表单内无单行文本、多行文本组件,故无法选择到字段,需要在表单内加上这两个任意一个组件才行。
关联表单支持数据单选和数据多选模式,默认数据单选 (多选模式关闭)。
数据单选时支持数据填充,多选时不支持数据填充。
除了可以选择其他表单的数据,数据填充功能支持将选中的关联数据的字段填充到当前表单的字段中。
通过宜搭连接器修改流程表单数据,可以通过在表单中使用一个关联表单关联流程表单的数据来实现,使用获取单条数据节点获取关联表单的数据,再使用更新数据节点更新获取到的数据就可以了。
因为关联表单只能获取到流程表单已经完成且审批结果为同意的数据,所以这个方法只能修改已经完成且结果为同意的流程数据;
关联表单必须要选择数据,从关联表单获取数据是从关联表单选择的数据中获取。
在使用宜搭的表单组件时,如果您需要获取关联表单组件(如级联选择器、多选框等)中的每一项数据,可以根据不同的组件类型和属性设置采用不同的方法。以下是一些常见的处理方法: - 级联选择器:对于级联选择器,可以通过绑定 onChange 事件来监听组件值的变化,并将选中的项作为参数传递到回调函数中进行处理 - 多选框/复选框:对于多选框或者复选框,可以通过设置 value 属性来指定选中的项。然后,在提交表单或者其他需要处理数据的操作中,可以读取该属性并将选中的项作为数组传递给下一步处理逻辑。
问题一:
获取关联表单组件的每一项数据,有两种方法:
在B表对应的流程中,需要使用系统参数来获取指定关联表单字段的值,也就是通过 $ref.字段名 获取关联表单字段的值。在多选模式下,关联表单字段的值是一个列表,你可以通过循环的方式获取列表中每个元素的值。
如果你需要在表单的页面中预览关联表单的内容,你可以创建一个list组件,并在组件的数据映射中配置关联表单组件的字段。在多选模式下,组件的值是一个列表,你可以通过循环的方式获取列表中每个元素的值。
问题二:
如果你需要使用这些多选的数据更新A表的其他字段数据,一般需要通过代码实现。在触发B表中流程的时候,你可以编写一段JavaScript来获取多选组件所选中的值,并使用API更新A表的字段。代码的具体实现,需要根据实际情况和需求进行书写,具体可以参考文档中的API使用说明和样例代码。
在应用中使用关联表单的多选模式时,可以使用以下方法获取关联表单组件的每一项数据,并将其用于更新A表的其他字段数据:
问题一:获取关联表单组件的每一项数据
在B表的保存操作中,获取多选关联表单组件的值。您可以使用以下语句来获取该组件的值:
var selectedValues = formUtils.getFieldValue('multiRelationFieldId');
其中,'multiRelationFieldId'为您在B表中设置的多选关联表单组件ID。
将获取到的值转换为数组,并遍历数组,以便逐一获取每个选中项的数据。例如,您可以使用以下代码来遍历数组并输出每个选中项的数据:
var arrSelectedValues = selectedValues.split(',');
for (var i = 0; i < arrSelectedValues.length; i++) {
var selectedValue = arrSelectedValues[i];
console.log("Selected value: " + selectedValue);
}
注意:在B表中,多选关联表单组件的value值是选中项对应的A表中的主键值(如资源编号)。如果需要获取其他A表字段的值,还需要进一步查询A表以获取相应的数据。
问题二:用多选数据更新A表的其他字段数据
要使用多选数据更新A表的其他字段数据,可以按照以下步骤进行操作:
遍历获取到的选中项数据,并使用ODPS SQL语言编写UPDATE语句,将需要更新的字段数据更新到A表中。例如,您可以使用以下代码来更新'A表'的'状态'字段:
var arrSelectedValues = selectedValues.split(',');
for (var i = 0; i < arrSelectedValues.length; i++) {
var selectedValue = arrSelectedValues[i];
var updateSql = "UPDATE A_table SET 状态='已分配' WHERE 资源编号=" + selectedValue;
odps.execUpdate(updateSql);
}
在更新完成后,您还可以执行SELECT语句来验证更新结果。例如,您可以使用以下代码查询'A表'中所有状态为'已分配'的记录:
var selectSql = "SELECT * FROM A_table WHERE 状态='已分配'";
var result = odps.execSelect(selectSql);
while(result.next()) {
console.log(result.getString(1) + "\t" + result.getString(2)); // output result
}
在执行更新操作之前,请务必备份目标数据,并谨慎测试和验证其影响。建议您参考MaxCompute官方文档或联系MaxCompute技术支持团队以获取更多帮助。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。