Tuesday, March 12, 2013

Displaying the Account and Contact records using Wrapper Class


Visualforce Page:

<apex:page controller="accountscls" >
      <apex:form >
        <apex:Pageblock >
            <!-- <apex:pageblocktable value="{!items}" var="c">
                <apex:column value="{!c.account.name}"/>
                <apex:column value="{!c.lastname}"/>
                <apex:column value="{!c.acc.name}"/>
                <apex:Column value="{!c.con}"/>             
            </apex:pageblocktable> -->

            <table>           
                  <apex:repeat value="{!items}" var="w">
            <tr>
                <td>
                {!w.acc.name}
                </td>
                <td>
                <apex:repeat value="{!w.con}" var="c">
                    {!c.lastname}<br/>
                </apex:repeat>
                </td>
            </tr>  
                  </apex:repeat>
            </table>     
        </apex:Pageblock>
      </apex:form>
</apex:page>

Apex Class:

public with sharing class accountscls {
   
    /*public List<Contact> items{get; set;} 

    public accountscls(){ 
        items=[Select id, lastname, account.name from Contact];
                                   }*/
   
    public class wrapper{
   
        public Account acc {get; set;}
        public List<Contact> con {get; set;}
       
        public wrapper(Account a, List<contact> lst){
            acc=a;
            con=lst;
                                                                            }
                                    }
   
    public List<wrapper> items{get; set;}
   
    public accountscls(){
        items = new list<wrapper>();
        List<Account> lstacc = [Select id, name,(select lastname from Contacts) from Account];
        for(Account a:lstacc){
            if(a.contacts.size()>0)
            items.add(new wrapper(a,a.contacts));
                                       }   
                                 }   
                                                       }

No comments:

Post a Comment