Soql:需要帮助访问datatable中的子查询值

时间:2014-09-06 14:52:30

标签: salesforce

对Salesforce来说是新手。 我使用了以下查询:

select name,(select Due_Amount__c from Dues__r where year__c=1990 and month__c=3) from contact where Accountid   = '00190000012j4Xi'

将结果显示为

姓名Due__c     Rose Gonzalez Due_Amount__c
            1 400.0     肖恩福布斯Due_Amount__c             1 300.0

我将数据表中的结果填充为contact.name:

 totalDues = new List<Contact>([select name,(select Due_Amount__c from Dues__r where year__c=1990 and month__c=3) from contact where Accountid   =: selectedSoc]);
        totalDuesWrapperList = new List<contactWrapper>();
        for(Contact c : totalDues)
        totalDuesWrapperList.add(new contactWrapper(c));

/*Wrapper class*/
public Contact con{get; set;}
        public Boolean selected {get;set;}
//        public Due__c totalDues{get;set;}
        public Due__c dueObj{get;set;}
        public Decimal totalDues{get;set;}
        public contactWrapper(Contact c)
        {
            con= c;
            selected = false;
            totalDues = 0;
            dueObj = new Due__c();
        }
    }

视觉强制代码:

<apex:dataTable value="{!totalDuesWrapperList}" var="con" id="contactTable2" columnswidth="50px,50px" cellpadding="4" border="1" title="table2">
<apex:column headervalue="Member Name" value="{!con.con.name}" />
<apex:column headervalue="Dues Remaining" value="{!con.Due_Amount__c}" />
</apex:dataTable>

我遇到的问题是无法像con.Due_Amount__c一样访问到期金额(con.name)

在这方面,有没有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

子查询将自身显示为集合,因此您需要访问集合中的各个记录以获取值。

E.g。获得第一笔会费到期金额。

<apex:column headervalue="Dues Remaining" value="{!con.Dues__r[0].Due_Amount__c}" />

或者,您可能会发现修改包装类以将所需值公开为属性更容易。

public Decimal DueAmount { 
    get {
        return con.Dues__r[0].Due_Amount__c;
    }
}

另见:

顺便说一下,Salesforce StackExchange是Salesforce特定问题的好地方。