![](/img/trans.png)
[英]Displaying multi-subquery, dynamic field, dynamic object SOQL query results on a VF page
[英]Displaying SubQuery on VF Page
有人能帮忙吗
notices =[SELECT Description__c,Id,Name__c,Notice_Date__c, (select id,Name from Attachment), FROM Notice__c];
我有附件的物件通知
它有一个附件,我想在vf页面上放这样的附件
公告名称
通知说明
通知日期
与该通知记录关联的附件名称或ID
我的控制器
public class On_StudentNoticeController {
public List<Notice__c> notices{get;set;}
public On_StudentNoticeController (){
notices=new List<Notice__c>();
}
public PageReference Onpageload() {
notices = [SELECT Id, Name__c, Description__c,Notice_Date__c,
(SELECT Id, Name FROM Attachments)
FROM Notice__c
ORDER BY Notice_Date__c DESC NULLS FIRST];
}
}
我当前问题的屏幕截图:
编辑#2
看来您要遍历空列表。 您的执行顺序是错误的,您的生活过于复杂。 尽管我会说这应该是运行时错误,而不是编译错误,但很有趣。 也许编译器变得更聪明了。
这就是您的代码无法正常工作的原因:
On_StudentNoticeController ()
)触发。 它创建一个空列表。 这样尝试? 我从字面上复制了带有附件的自定义对象的代码。 您只需要更改几个对象和字段名称,就可以了:
public class accswithattachments {
public List<SF_Payable__c> accs {get; private set;}
public accswithattachments(){
accs = [SELECT Id, Name, LastModifiedDate,
(SELECT Id, Name FROM Attachments)
FROM SF_Payable__c
ORDER BY CreatedDate
LIMIT 1000];
}
}
<apex:page controller="accswithattachments" >
<ol>
<apex:repeat value="{!accs}" var="a">
<li><apex:outputField value="{!a.Name}" /><br/>
<apex:outputField value="{!a.LastModifiedDate}" /><br/>
<apex:dataList value="{!a.Attachments}" var="attachment">
<apex:outputText value="{!attachment.Name}"/>
</apex:dataList>
<br/>
</li>
</apex:repeat>
</ol>
</apex:page>
输出(当然是我的数据):
我很好奇为什么它会给您编译错误。 我想我知道为什么会抱怨(列表为空)。 但是还是
编辑#1以回答评论:
这是对我有用的东西。 是帐户附件(因为我没有您的对象)。 它甚至不使用Apex控制器。
<apex:page standardController="Account" recordSetVar="accounts">
<ol>
<apex:repeat value="{!accounts}" var="acc">
<li><apex:outputField value="{!acc.Name}" /><br/>
<apex:outputField value="{!acc.Description}" /><br/>
<apex:outputField value="{!acc.LastModifiedDate}" /><br/>
<apex:dataList value="{!acc.Attachments}" var="attachment">
<apex:outputText value="{!attachment.Name}"/>
</apex:dataList>
<br/>
</li>
</apex:repeat>
</ol>
</apex:page>
原始答案
您的查询无法编译,我认为应该类似于以下内容:
SELECT Id, Name__c, Description__c,Notice_Date__c,
(SELECT Id, Name FROM Attachments)
FROM Notice__c
一旦它起作用,您应该阅读关于遍历集合的Visualforce标记(apex:dataList,apex:dataTable,apex:pageBlockTable, apex:repeat ...)。 根据您希望输出的外观使用其中一种
像这样吗
<apex:repeat value="{!notices}" var="notice">
<p>
<apex:outputField value="{!notice.Name__c}" /><br/>
<apex:outputField value="{!notice.Description__c}" /><br/>
<apex:outputField value="{!notice.Notice_Date__c}" /><br/>
</p>
<apex:dataList value="{!notice.Attachments}" var="attachment">
<apex:outputText value="{!attachment.Name}"/>
</apex:dataList>
</apex:repeat>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.