我有3个具有主从关系和查找关系的自定义对象。 CustomA__c(相关的CustomB__c)<-> CustomB__c <-> CustomC_c(相关的CustomB_cc)
到目前为止,我已经建立了带有HTML表的Visualforce页面,用于复制PDF文档和“自定义控制器扩展”。 但是我只是一个使用apex编码的初学者。
问题是我需要按原样复制文档,当没有与CustomA__c或5以下的相关记录时,它仍应显示完整表(空行)。最高文档上的行/相关记录为5,不需要第二页。
目前,我正在尝试通过使用apex:variable和apex:repeat来实现这一点,正如我所看到的一些示例,但是也许还有另一种解决方案。对于Visualforce页面,我已经为包含数据的行编写了代码,为空行编写了另一个apeax:repeat。
但是我确实在为控制器苦苦挣扎,我知道我需要遍历列表,因为我只是不明白它还不够好,所以我已经编写的代码也被合并到示例中。
>任何帮助将不胜感激!谢谢,乔西普
public with sharing class CustomAController {
public CustomA__c customa{get; set;}
public CustomA__c ca{get; set;}
public CustomAController (ApexPages.StandardController controller) {
ca = (CustomA__c )controller.getRecord();
customa= [SELECT Id, Name FROM CustomA__c WHERE Id = :ApexPages.currentPage().getParameters().get('Id')];
}
public List<CustomB__c > getrelatedCustomB() {
List <CustomB__c > cbList = New List<CustomB__c >(5);
for(CustomA__c acc:[SELECT Id, Name, (SELECT Id, Name, ... , CustomCfield__r.Name FROM CustomBs__r ORDER BY Name LIMIT 5) FROM CustomA__c WHERE Id = :customa.Id]){
for(CustomB__c cb:acc.CustomBs__r)
cbList.add(cb);
}
return cbList;
}
}
答案 0 :(得分:0)
通过在子对象上编写直接查询而不是父子SOQL查询,可以大大简化代码。
public List<CustomB__c > getrelatedCustomB() {
return [SELECT Id, Name, ... , CustomCfield__r.Name
FROM CustomB__c
WHERE CustomA__c = :customA.Id
ORDER BY Name
LIMIT 5];
}
这里不需要在Apex中进行迭代。