我有一个顶点控制器,它建立一个要在数据表中显示的列表。列表结合了不同的对象,所以我创建的变量是一个列表
假设此列表中的所有对象都有一个“external__c”字段。我如何告诉 visualforce 渲染这个字段?使用 {!obj.external__c} 将不起作用,因为它是一个 sObject。
我有一个顶点控制器,它建立一个要在数据表中显示的列表。列表结合了不同的对象,所以我创建的变量是一个列表
假设此列表中的所有对象都有一个“external__c”字段。我如何告诉 visualforce 渲染这个字段?使用 {!obj.external__c} 将不起作用,因为它是一个 sObject。
如果您有一个 SObjects 列表,则可以使用一个公共字段,obj.get('external__c')
尽管您通常必须将结果转换为能够使用它的类型。
您可以在代码中创建一个自定义类,您可以在其中填充各种对象:
// inside the controller do this:
public class COutputObject
{
private SObject sObj = null;
public string strField get {return (string)sObj.get('external__c'); }
public COutputObject(SObject s)
{
sObj = s;
}
}
// -- snip --
// then have a list of these which you'll loop over in the page
public list<COutputObject> liObjects = new list<COutputObject>();
// fill this with data
for(CustomObj__c sCustom : [select Id, external__c from CustomObj__c limit 200])
{
liObjects.add(new COutputObject(sCustom));
// etc.
for(CustomObj2__c sCustom : [select Id, external__c from CustomObj2__c limit 200])
{
liObjects.add(new COutputObject(sCustom));
// etc.
不是 100% 确定我在 getter 上的语法是否正确,但它很接近;)希望这将帮助您实现您所追求的目标!
假设 list 属性在您的控制器中声明如下Public List<Beer__c> ColdOnes { get; set; }
:那么在 Visualforce 中,您可以通过控制器中的属性名称来引用啤酒{!ColdOnes}
...... 以下内容主要取自 Visualforce 指南,但我已对其进行了调整以适应我们的 thist-quenching 主题:)
<apex:dataTable value="{!ColdOnes}" var="co" id="theTable" rowClasses="odd,even" styleClass="tableClass">
<apex:facet name="caption">table caption</apex:facet>
<apex:facet name="header">table header</apex:facet>
<apex:facet name="footer">table footer</apex:facet>
<apex:column>
<apex:facet name="header">Beer Name</apex:facet>
<apex:facet name="footer">column footer</apex:facet>
<apex:outputText value="{!co.name}"/>
</apex:column>
<apex:column>
<apex:facet name="header">Alcohol Volume</apex:facet>
<apex:facet name="footer">column footer</apex:facet>
<apex:outputText value="{!co.alcohol_volume__c}"/>
</apex:column>
</apex:dataTable>
请注意,如果您在代码中使用查询值设置 ColdOnes,则需要选择要在 Visualforce 中输出的字段。所以:
ColdOnes=[select name, alcohol_volume__c from Beer__c where blahblahblah];
好吧,我要去喝一品脱。希望有帮助!