Zoho Creator是一个用于快速创建简单云应用程序的强大系统。我遇到了子表单的问题,但是:目前,Zoho Creator没有提供按指定列对子表单记录进行排序的功能。相反,它按照添加顺序对记录进行排序。
我的子表单是一个创建者表单,链接到另一个创建者表单(基本上是2个不同的表)。表单与双向查找关系链接。
我已经看到并试图实施这些“黑客”,但它们都不适用于我的情况:
我也称Zoho技术支持,在查看我的应用程序之后,他们说目前无法对子表单记录进行排序。
还有其他想法吗?
答案 0 :(得分:3)
我的测试解决方案仍然是一个黑客,但在Zoho实现一种通过GUI对子表单记录进行排序的方法之前,这将是必须的。
首先,创建一个可以从任何地方调用的函数(例如,当添加或更改新的子表单记录时) - 有关详细信息,请转到此处:http://www.zoho.com/creator/help/script/functions.html
此函数将首先通过父记录ID复制子表单记录(按适当的列排序),然后删除在脚本启动之前插入的所有子表单记录:
int SubFormRecords_SortByAnything_ReturnCount(int ParentRecordID)
{
scriptStartTime = zoho.currenttime;
for each rSubFormRecord in SubFormRecords [ParentFieldName = input.ParentRecordID] sort by FieldName1, FieldName3, FieldName2
{
NewSubFormRecordID = insert into SubFormRecords
[
FieldName1 = rSubFormRecord.FieldName1
FieldName2 = rSubFormRecord.FieldName2
FieldName3 = rSubFormRecord.FieldName3
];
}
delete from SubFormRecords[ (Series == input.ParentRecordID && Added_Time < scriptStartTime) ];
return SubFormRecords[ParentFieldName == input.EventID].count();
}
一旦上述排序功能到位(为您的应用程序定制),请在适当时调用它。我在添加与子表单关联的记录时,或者在更改排序列值时调用它。
效果很好,只要您没有与添加和删除记录相关的复杂逻辑,它对应用程序性能的影响应该很小。
请告诉我这是否适合您,以及您是否有更好的想法。
警告:此解决方案不适用于包含其他子表单记录的表单,因为删除记录将删除链接的子表单值。
感谢。
答案 1 :(得分:0)
I have a a very simple workaround:
1) You have to add a Form Workflow
2)Record Event - Create OR Edit OR Create/Edit (As per your requirement)
3)Form Event - On successful form submission
4)Let Main_Form be the link name of the Main Form
4)Let Sub_Form be the Link name of the Sub Form (Not the link name you specify in the main form for the same sub form)
4)Let Field1 and Field2 are fields of subform on which you want to sort subform records
5)Let Link_ID be lookup field of Mainform ID in the subform
Workflow
1)Sub_Records = Sub_Form[Link_ID == input.ID] sort by Field1,Field2;
(sort by multiple fields, add asc/desc as per requirement)
2)delete from Sub_Form[Link_ID == input.ID];
3)for each sub_record in Sub_Records
{
insert into Sub_Form
[
Added_User = zoho.loginuser
Link_ID = input.ID
Field1 = sub_record.Field1
Field2 = sub_record.Field2
]
}
//Now you check the results in edit view of the main form