Domanda

Ho un controller APEX che crea un elenco da visualizzare in un dati. L'elenco combina un oggetto diverso, quindi la variabile che crea è un elenco

Dire che tutti gli oggetti in questo elenco hanno un campo "esterno__c". Come faccio a dire alla VisualForce di rendere questo campo? L'uso di {! Obj.external__c} non funzionerà poiché è un singhiozzo.

È stato utile?

Soluzione

Se hai un elenco di singoli progetti puoi ottenere un campo comune utilizzando obj.get('external__c') Anche se generalmente devi lanciare il risultato su un tipo per poterlo usare.

È possibile creare una classe personalizzata nel codice che puoi riempire con vari oggetti:

// 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.

Non sicuro al 100% se la mia sintassi su Getter sia corretta, ma è vicino;) Speriamo che questo ti aiuti a raggiungere ciò che stai cercando!

Altri suggerimenti

Supponiamo che la proprietà dell'elenco sia dichiarata così nel tuo controller: Public List<Beer__c> ColdOnes { get; set; }. Bene in Visualforce, fai riferimento alle birre con il nome della loro proprietà nel controller ... {!ColdOnes}. Quello che segue è prelevato per lo più dalla Guida di Visualforce, ma l'ho adattato per soddisfare il nostro argomento che inganna :)

<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>

Basta essere consapevole che se stai impostando Coldones con un valore interrogato nel codice, devi selezionare i campi che intendi output nella tua forza visiva. Così:

ColdOnes=[select name, alcohol_volume__c from Beer__c where blahblahblah];

Bene, sono fuori per una pinta. Spero possa aiutare!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top