데이터 테이블에 표시 할 목록을 작성하는 꼭지점 컨트롤러가 있습니다. 목록은 다른 개체를 결합하므로 내가 만든 변수는 목록입니다sObject가 Visualforce에 있습니까?
이 목록의 모든 개체에 "external__c"필드가 있다고 가정 해보십시오. 이 필드를 렌더링하려면 어떻게해야합니까? {! obj.external__c}를 사용하는 것은 sObject이므로 작동하지 않습니다.
데이터 테이블에 표시 할 목록을 작성하는 꼭지점 컨트롤러가 있습니다. 목록은 다른 개체를 결합하므로 내가 만든 변수는 목록입니다sObject가 Visualforce에 있습니까?
이 목록의 모든 개체에 "external__c"필드가 있다고 가정 해보십시오. 이 필드를 렌더링하려면 어떻게해야합니까? {! 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.
100 % 확인) 희망이 당신을 도울 것입니다 당신이 쫓아 오는 일을 성취하십시오!
컨트롤러에서 목록 속성이 이렇게 선언되어 있다고 가정 해 보겠습니다. 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>
그냥 알고 우리의 Thist 관련 담금질 주제를 :)에 맞도록 적응 당신은 당신의 코드에서 쿼리 값으로 ColdOnes을 설정하는 경우 Visualforce에서 출력하려는 필드를 선택해야합니다. 따라서 :
ColdOnes=[select name, alcohol_volume__c from Beer__c where blahblahblah];
글쎄, 나는 파인트 때문에. 희망이 도움이됩니다!
아, 잠깐만 기다려주세요. 목록에 sObject가 있다는 의미입니까? 이제는 다른 문제입니다 ... sObject를 사용하는 대신에 객체 모음 사이에 공통 필드가있는 '포괄적 인'맞춤 객체를 사용하고 해당 맞춤 객체의 목록을 만든 다음 문제의 커스텀 객체의리스트로서 sObject리스트? 내 말은, 한번도 시도한 적이 없지만 이론적으로는 작동해야합니다 ... (어쨌든, 이번에는 맥주를 떠납니다) – Aaron
올바른, sObjects. 앞에서 언급 한 'catch-all'사용자 정의 객체 아이디어를 사용했지만 클라이언트에 문제가 있습니다. 설치 사용자 만이 관리 패키지에서 사용자 지정 개체를 만들 수있는 문제가 있습니다. 그 자리에서 sObject를 사용하면 문제가 완화되기를 기대하고있었습니다. – CDelaney
컨트롤러를 공유하는 클래스가 있다고 가정합니다. 고객의 에디션은 무엇입니까? Enterprise 또는 Unlimited를 사용중인 경우 사용자 정의 개체 및 해당 필드의 프로필을 프로필별로 균등하게 설정할 수 있습니다. 전문가 인 경우 문제 해결 방법을 찾아야합니다. 대답이 '공유하는'질문에 '예'라고 가정하면 관련 속성/메소드를 정적으로 설정해보십시오. 클래스가 생성되기 전에 정적이 초기화되므로 나머지 코드에 대해 확장 가능한 무거운 문제를 해결할 수 있어야합니다. – Aaron