仅在salesforce中的相关列表

时间:2014-04-30 15:21:30

标签: salesforce visualforce apex

如何使用VF或APEX获取相关列表,当我们通过URL传递ID和对象时,Ex假设我发送了帐户对象和ID,我应该只获取与帐户对象相关的列表,但不会获取帐户详细信息。如果我使用APEx:详细信息我将获得帐户及其相关列表,但我只想要相关列表。

@Ivan这里的代码

控制器

Public Class CustomRelatedList{


public String objectType {get; set;}

public Set<String>  chsobject1 {get;set;}
public sobjecttype chsobject {get;set;}

public sObject[] data {get; set;}


public CustomRelatedList() {
chsobject1 = new Set<String>(); 
 }


public void CustomRelatedList1() {
  //get URL parameters

// objectType = ApexPages.currentPage()。getParameters()。get('urlparm');

objectType = ‘Account’; //for testing purpose will get object type & Id from URL

Map<String , Schema.SObjectType> globalDescription =     Schema.getGlobalDescribe();

  Schema.sObjectType sObjType = globalDescription.get(objectType);  
    Schema.DescribeSObjectResult r1 = sObjType.getDescribe(); 

  List<Schema.ChildRelationship> C = r1.getChildRelationships(); 

for (Schema.ChildRelationship C1:C) {
       chsobject = C1.getChildSObject(); 
     chsobject1.add(String.valueof(chsobject));
}

  }
}

 VF page
<apex:page controller="CustomRelatedList" >
<apex:repeat value="{!chsobject1}" var="a" >
<apex:relatedList list="{!a}" subject="{!$CurrentPage.parameters.id}" /> 
</apex:repeat>
</apex:page>

我想显示Id的所有相关列表(不仅仅是名称),但参数列表只需要Literal

2 个答案:

答案 0 :(得分:2)

我会欺骗和隐藏我不想要的CSS页面块;)它不是一个聪明的Apex解决方案,但它会处理太多东西(对象和列表用户)不应该看,页面布局与他的个人资料和选定的记录类型等一致。)

从这样的页面开始:

<apex:page id="page" showHeader="false" readonly="true">
    <apex:pageMessage severity="error" strength="2" rendered="{!ISBLANK($CurrentPage.parameters.id)}"
        summary="Id not passed" />
    <apex:detail id="detail" subject="{!$CurrentPage.parameters.id}" 
        title="false" showChatter="false" relatedListHover="false"/>
</apex:page>

检查创建的HTML,您应该看到类似的内容:

enter image description here

我只是去隐藏div对#34;详细信息&#34;部分。我决定通过元素ID:

来做到这一点
<apex:page id="page" showHeader="false" readonly="true">
    <style>
    div#ep_page_detail{
        display:none;
    }
    </style>

    <apex:pageMessage severity="error" strength="2" summary="Id not passed" rendered="{!ISBLANK($CurrentPage.parameters.id)}" />

    <apex:detail id="detail" subject="{!$CurrentPage.parameters.id}" 
        title="false" showChatter="false" relatedListHover="false"/>
</apex:page>

您可能希望通过该div的类或所有子div的类来执行...如果SF更改了id生成的类名/方法,则这两个选项都可能会中断。它不太可能,但请记住这一点。

确保我们知道生成的ID的更安全的方法是使用$Component全局变量但是当我使用{{{}时,它并没有产生正确的结果1}} ...

答案 1 :(得分:1)

我认为您正在寻找<apex:relatedList> VF代码。请参阅文档here