2011-12-15 32 views
2

私はVisualforceの新機能です。集計SOQLクエリの結果をVisualforceページに表示するにはどうすればよいですか?

私はここに、このページを見ている:私は、Visualforceページにこのコードを追加したときにhttp://force.siddheshkabe.co.in/2010/11/displaying-aggregate-result-on.html

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'); 

しかし、それがないすべてではなく、それを実行するコードを印刷しています。私は何をしなければならないのですか?ご指摘ありがとうございます。

答えて

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