sObject в visualforce? - PullRequest
       10

sObject в visualforce?

0 голосов
/ 07 сентября 2011

У меня есть контроллер apex, который создает список для отображения в таблице данных.Список объединяет разные объекты, поэтому я создаю переменную List

Допустим, все объекты в этом списке имеют поле "external__c"Как мне сказать visualforce визуализировать это поле?Использование {! Obj.external__c} не будет работать, так как это sObject.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Если у вас есть список объектов SObject, вы можете получить общее поле, используя 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%, правильный ли мой синтаксис на геттере, но он близок;) Надеюсь, это поможет вам достичь того, что вы ищете!

0 голосов
/ 07 сентября 2011

Допустим, свойство списка объявлено так в вашем контроллере: Public List<Beer__c> ColdOnes { get; set; }.Ну, в Visualforce вы ссылаетесь на beers по имени их свойства в контроллере ... {!ColdOnes}.Нижеследующее в основном взято из руководства по Visualforce, но я адаптировал его в соответствии с нашей темой: "

<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>
* 1005". Просто имейте в виду, что если вы устанавливаете ColdOnes с запрашиваемым значением в своем кодеВам нужно выбрать поля, которые вы собираетесь выводить в Visualforce.Итак:
ColdOnes=[select name, alcohol_volume__c from Beer__c where blahblahblah];

Ну, я ухожу за кружкой пива.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...