2011-12-15 1 views
2

저는 Visualforce를 처음 사용합니다.Visualforce 페이지에 집계 SOQL 쿼리의 결과를 어떻게 표시합니까?

AggregateResult[] groupedResults = [SELECT Name, Days__c FROM Contact WHERE Days__c != ]; 

    for (AggregateResult ar : groupedResults) { 
    System.debug('Name: ' + ar.get('Name') + '\nDays Taken : ' + ar.get('Days__c') + '\n'); 

를 보이지 않고 대신 그것을 실행하는 코드 인쇄입니다 : 내가없이 VisualForce 페이지에이 코드를 추가 그래서 http://force.siddheshkabe.co.in/2010/11/displaying-aggregate-result-on.html

을 :

여기이 페이지에서 찾고 있어요. 나는 무엇을해야만 하는가? 어떤 지침을 주셔서 감사합니다.

답변

16

Apex 코드는 custom controller or controller extension입니다. VisualForce 페이지는 컨트롤러와 별개의 파일입니다. 참조한 페이지에 VF 페이지가 표시되지 않습니다. 또한 VF 구성 요소를 AggregateResult에 바인딩 할 수 있다고 생각하지 않으므로 래퍼 클래스가 필요합니다.

다음은 작동 코드입니다.

컨트롤러 :

public with sharing class TestController { 

    public Summary[] Summaries { get; set; } 

    public TestController() { 
     AggregateResult[] results = [ 
      SELECT Name, Count(Id) Quantity FROM Opportunity GROUP BY Name 
     ]; 
     Summaries = new List<Summary>(); 
     for (AggregateResult ar : results) { 
      Summaries.add(new Summary(ar)); 
     } 
    } 

    // wrapper class to hold aggregate data 
    public class Summary { 
     public Integer Quantity { get; private set; } 
     public String Name { get; private set; } 

     public Summary(AggregateResult ar) { 
      Quantity = (Integer) ar.get('Quantity'); 
      Name = (String) ar.get('Name'); 
     } 
    } 

} 

VF 페이지 :

<apex:page controller="TestController"> 
    <apex:form > 
     <apex:repeat value="{!Summaries}" var="summary"> 
      {!summary.Name}: {!summary.Quantity}<br/> 
     </apex:repeat> 
    </apex:form> 
</apex:page> 
+0

내가지고 있어요 "목록에 LIST 에서 불법 할당을 ". 나는 AggregateResult [] 결과를 LIST 결과로 변경하려고했지만 같은 결과를 보였다. 어떤 아이디어? – Gibson

+0

즉, SOQL 쿼리에 집계 함수가 없으므로 일반 기회리스트가 반환됩니다. –

+0

@JeremyRoss 우수 사례! 감사. – MnZ