在一个pageblocktable中显示Salesforce VF页面中多个对象的数据

时间:2016-06-23 02:11:50

标签: salesforce wrapper visualforce

我需要在Salesforce VF页面的单个pageblocktable中显示来自2个对象(Account& Contact)的记录,帐户记录后跟Contact记录。 我知道我们可以使用包装器类来实现这一点,但是我遇到的所有示例都谈到了显示复选框或从页面块中的不同对象垂直(而不是水平)显示列。

会欣赏任何指针/代码示例。谢谢!

        Object    Name                  Phone           Email

记录1 - 帐户 - 帐户名称 - 帐户电话 - 帐户电子邮件

记录2 - 联系 - 联系名字 - 联系电话 - 联系电子邮件

1 个答案:

答案 0 :(得分:0)

我找到了一种肮脏的做法。这可能不是最佳答案,但您可以按如下方式实现所需的功能。创建二维数组并将不同对象的数据存储为字符串。然后在visualforce页面中迭代数组以显示数据。

public class MixedObjectVFController {

public static List<List<String>> getObjectList(){
    List<List<String>> strList = new List<List<String>>();
    List<Account> acc = [select name,phone from account limit 2];

    for(account a : acc){
        List<String> tempList = new List<String>();
        tempList.add('account');
        tempList.add(a.name);
        tempList.add(a.phone);
        strList.add(tempList);
    }
    List<contact> cList = [select name,phone from contact limit 2];
    for(contact a : cList){
        List<String> tempList = new List<String>();
        tempList.add('contact');
        tempList.add(a.name);
        tempList.add(a.phone);
        strList.add(tempList);
    }
    return strList;
} }

和Visualforce页面

<apex:page controller="MixedObjectVFController" >
<apex:pageBlock>
    <apex:pageBlockSection>
        <apex:pageBlockTable value="{!objectList}" var="item">
            <apex:column headerValue="Object" value="{!item[0]}" />
            <apex:column headerValue="Name" value="{!item[1]}" />
        </apex:pageBlockTable> 
    </apex:pageBlockSection>
</apex:pageBlock>

确保在使用索引时检查空值。