2013-04-10 26 views
0

我的控制器都是自定义的。从自引用表/ sObject制作VisualForce/Apex中的树状结构

我有引用相同的对象和表示对父对象的字段的对象/表。

有在对象/表中的许多行。

我希望所有的人都转储到VF,并允许用户检查过其行适用于他们。如果父对象不适用于用户,则该子对象将永远不会。

限制用户有多少项目在页面上看到,我想只显示顶级对象,且仅当用户选择一个顶级对象,他会看到它的子对象。顶级对象在理论上可以具有无限的深度。

这是如何最好VisualForce公司和Apex实现的呢?

谢谢!

回答

0

要显示例如仅父帐户的所有你需要的是

SELECT Id, Name FROM Account WHERE ParentId = null 

当用户决定他想要查看一个记录的儿童(可以在复选框中进行的那样为<apex:actionFunction>),你会能够查询最多5 + 1级的深度。启动与此查询和实验

​​

5 + 1我的意思是5“点”和子查询的选项。它不会在帐户上工作,但在您的自定义对象上,您应该可以在此处放置(SELECT Id FROM CustomObjects__r)

然后,你必须以某种方式在树中很好地显示它们;)有很多JavaScript工具可以接受分层的JSON数据,或者你可能决定构建大量嵌套的<apex:repeat> ......只要注意触及视图状态限制!

检查这些链接一些灵感/警告:

  1. https://salesforce.stackexchange.com/questions/4537/how-to-reduce-a-large-internal-view-state-what-is-in-the-internal-view-state
  2. https://appexchange.salesforce.com/listingDetail?listingId=a0N300000016chCEAQ(免费)
  3. https://appexchange.salesforce.com/listingDetail?listingId=a0N30000001gFEWEA2(付费,不知道如果有,你可以用它来查看处于 “试运行” 选项至少Visualforce使用。我没有与此相关的公司以任何方式