1

Zoho Creator 是一个用于快速创建简单云应用程序的出色系统。不过,我遇到了子表单的问题:目前,Zoho Creator 不提供按指定列对子表单记录进行排序的功能。相反,它按添加顺序对记录进行排序。

我的子表单是一个创建者表单,它链接到另一个创建者表单(基本上是 2 个不同的表)。表单通过双向查找关系链接。

我已经看到并尝试实施这些“黑客”,但它们都不适合我的情况:

  • [Zoho 论坛,“子表单排序行”][1]
  • [Zoho 论坛,“对子表单的行进行排序并预填充我想要预设的行字段”][2]

我还打电话给Zoho技术支持,看了我的申请后,他们说目前无法对子表单记录进行排序。

还有其他想法吗?

4

2 回答 2

4

我测试的解决方案仍然是一个 hack,但在 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();
}

一旦上述排序功能到位(为您的应用程序定制),请在适当的时候调用它。我在添加与子表单关联的记录或更改排序列值时调用它。

这很好用,只要您没有与添加和删除记录相关的复杂逻辑,它对应用程序性能的影响应该很小。

请让我知道这是否适合您,以及您是否有更好的想法。

警告:此解决方案不适用于包含附加子表单记录的表单,因为删除记录将删除链接的子表单值。

谢谢。

于 2014-01-03T04:51:31.247 回答
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
于 2021-05-11T06:33:06.893 回答