Visualforce Custom Controller List

前端 未结 3 1642
面向向阳花
面向向阳花 2020-12-18 15:02

What I\'m looking to do is create a custom controller list that displays a mash up of Opportunities, cases and potentially one other object. I started using the class from

3条回答
  •  轮回少年
    2020-12-18 15:42

    // First, prototype wrapper list above main class constructor
    public List theCaseOppWrapper {get; set;}
    
    // Define wrapper inner-class
    public class CaseOppWrapper
    {
        // The case object being wrapped
        public Case c {get; set;}
    
        // The Opportunity being wrapped
        public Opportunity o {get; set;}
    
        // Get Case AND Opportunity objects as parameters in constructor
        public CaseOppWrapper(Case theCase, Opportunity theOpportunity)
        {
            this.c = theCase;
            this.o = theOpportunity;
        }
    
        // Command handler - the fun part!
        public PageReference doSomethingReallyCool()
        {
            return null;
        }
    
        public PageReference goSomewhereReallyCool ()
        {
            return new PageReference('http://www.youtube.com/watch?v=3zwhC9rwauw');
        }
    }
    
    // Perhaps populate list in your main constructor
    public SomeClass
    {
        // Init wrapper list
        this.theCaseOppWrapper = new List();
    
        // Let's say, for example, that you have an Opportunity__c reference field on your Case object. 
        // In this case, you would first create a helper Opportunity map, like this:
        Map oppMap = new Map();
        for(Opportunity o : opportunities)
        {
           oppMap.put(o.Id, o);
        }
    
        // Now looping through cases you can create your blended wrapper.
        // Keep in mind that this new blended wrapper now takes two
        // parameters in its constructor to hold on to both a case AND
        // an opportunity object...
        List cases = [SELECT Id, Subject, …, …, … FROM Case LIMIT 1000];
        for(Case c : cases)
        {
            this.theCaseOppWrapper.add(new CaseOppWrapper(c, oppMap.get(c.Opportunity__c)));
        }
    }    
    

    Now in Visualforce...

    
        
            
        
        
            
        
        
            
        
        
            
        
    
    

提交回复
热议问题