0

我有一个顶点控制器,它建立一个要在数据表中显示的列表。列表结合了不同的对象,所以我创建的变量是一个列表

假设此列表中的所有对象都有一个“external__c”字段。我如何告诉 visualforce 渲染这个字段?使用 {!obj.external__c} 将不起作用,因为它是一个 sObject。

4

2 回答 2

2

如果您有一个 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 上的语法是否正确,但它很接近;)希望这将帮助您实现您所追求的目标!

于 2011-09-07T23:39:15.383 回答
0

假设 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];

好吧,我要去喝一品脱。希望有帮助!

于 2011-09-07T17:40:48.750 回答