データテーブルに表示されるリストを作成する頂点コントローラーがあります。リストは異なるオブジェクトを組み合わせているため、作成する変数はリストです
このリストのすべてのオブジェクトに「external__c」フィールドがあるとします。このフィールドをレンダリングするように visualforce に指示するにはどうすればよいですか? {!obj.external__c} は sObject であるため、使用できません。
データテーブルに表示されるリストを作成する頂点コントローラーがあります。リストは異なるオブジェクトを組み合わせているため、作成する変数はリストです
このリストのすべてのオブジェクトに「external__c」フィールドがあるとします。このフィールドをレンダリングするように visualforce に指示するにはどうすればよいですか? {!obj.external__c} は sObject であるため、使用できません。
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.
私の getter の構文が正しいかどうかは 100% 確信が持てませんが、ほぼ間違いありません ;) 願わくば、これが目的を達成するのに役立つことを願っています!
list プロパティがコントローラで次のように宣言されているとしましょう: Public List<Beer__c> ColdOnes { get; set; }
. Visualforce では、コントローラーのプロパティ名でビールを参照します... {!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>
コードでクエリされた値を使用して ColdOnes を設定する場合は、Visualforce で出力するフィールドを選択する必要があることに注意してください。そう:
ColdOnes=[select name, alcohol_volume__c from Beer__c where blahblahblah];
さて、私は一杯飲みに行きます。それが役立つことを願っています!