任何人都可以帮忙吗
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];
}
}
我当前问题的屏幕截图:
答案 0 :(得分:0)
编辑#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>