如何使用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
答案 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,您应该看到类似的内容:
我只是去隐藏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。