【问题标题】:How to hide sections of page layout based off Owner如何隐藏基于所有者的页面布局部分
【发布时间】:2012-06-12 09:28:19
【问题描述】:

我是 Salesforce 的新手,我正在考虑为潜在客户/联系人/客户制作页面布局,以便拥有特殊的所有者可见性。

我使用标准 Salesforce 页面布局根据需要查看详细信息页面,但我想知道如何根据查看用户是否是记录的所有者来显示或隐藏布局的一部分。


所需场景

记录 R 归用户 A 所有。记录 R 的详细信息页面是标准 Salesforce 页面布局,包含 2 个部分:一个部分包含联系信息(只有所有者用户 A 可以看到),一个包含附加信息的部分(所有用户都可以看到)。


我已经查看了文档,据我所知,唯一的方法是构建自定义控制器或扩展。这是唯一的方法吗?如果是这样,有没有人能很好地演练只更改页面布局的一部分而不是创建一个全新的页面?

【问题讨论】:

    标签: salesforce visualforce force.com


    【解决方案1】:

    您的最佳选择(方法 1)是将您的字段分成字段集(请参阅Working with Field Sets in Visualforce),然后使用 Visualforce 页面覆盖详细信息页面,该页面使用这些字段集来确定要显示哪些字段并且仅显示某些字段集,如果查看页面的用户是记录的所有者。这种方法不需要自定义控制器/扩展,允许您向非所有者隐藏页面的各个部分,并允许您(或其他管理员)使用拖放字段集编辑器修改每个部分中的字段,这与拖放页面布局编辑器非常相似。

    另一种不需要自定义控制器/扩展的方法(方法 2)是创建一个 Visualforce 页面,其中包含您只想向所有者显示的字段,然后仅在运行用户是记录时才呈现这些字段所有者。然后,您可以将此 Visualforce 页面添加到您的页面布局中。我不推荐这种方法的原因是,让这个页面中的字段样式与标准页面布局的其余部分相匹配是很痛苦的。

    仅供参考,在不使用 Visualforce 的情况下,没有直接的方法(阅读:没有 JavaScript hack)来显示/隐藏标准页面布局的部分。

    方法 1:

    <apex:page standardController="Contact">
         <!-- Fields everyone should see -->
         <!-- (stored in the 'FieldsEveryoneSees' fieldset) -->
         <apex:repeat value="{!$ObjectType.Contact.FieldSets.FieldsEveryoneSees}" var="f"> 
             <apex:outputField value="{!Contact[f]}" /><br/>
         </apex:repeat>
         <!-- Fields only the Owner should see -->
         <!-- (stored in the 'OwnerOnlyFields' fieldset) -->
         <apex:repeat value="{!$ObjectType.Contact.FieldSets.OwnerOnlyFields}" var="f"
                  rendered="{!$User.Id == Contact.OwnerId}"> 
             <apex:outputField value="{!Contact[f]}" /><br/>
         </apex:repeat>
    </apex:page>
    

    方法 2:

    <apex:page standardController="Contact" showHeader="false" sidebar="false">
         <apex:outputPanel rendered="{!Contact.OwnerId == $User.Id}">
              <!-- Fields only the Owner should see -->
              <apex:outputField value="{!Contact.LastModifiedDate}"/>
              <!-- etc... -->
         </apex:outputPanel>
    </apex:page>
    

    【讨论】:

    • 感谢您的帮助。使用字段集效果很好。我仍然需要做一些事情来让它按照我们想要的方式工作,而不是仅仅在该部分显示空白并显示一条消息。
    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2013-07-22
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多