Tuesday, February 28, 2017

Read Page layout dynamically and display Fields using java script

In this we are displaying the account fields dynamically by reading the page layout using java script.

Please find the vf page and classes below.













    
  
  
   
   
  
    




Apex Class
Public with sharing class MarsFirmSumController
{

    public Account acc {get; set;}
    public Boolean checkreloadpage {get; set;}

    public string rectypefld {get;set;}
    public string objectselected {get;set;}
    public list objectfieldlist {get;set;}
    
    public MarsFirmSumController(ApexPages.StandardController controller) 
    {
        List lstString=new List();
        for(String str:Schema.SobjectType.Account.fields.getMap().keySet()){
            lstString.add(str);
        }
        if (!Test.isRunningTest())
        {
            controller.addFields(lstString);
        }
        stdController = controller;
        acc = (Account) controller.getRecord();
        objectselected='Account';
        objectfieldlist = new list();
        checkreloadpage =false;
    }

    //method called on onload of page to showdata fields with data dynamically
    public void calledonload()
    {
        list reqfldlist=new list();
        
        list reqfldlist_temp=rectypefld.split('%firmsum%');
        if(reqfldlist_temp.size()!=1)
        reqfldlist=reqfldlist_temp[1].split(',');
        rectypefld=reqfldlist_temp[0];
        list rlist=new list(); 
        if(rectypefld !='' || rectypefld!=null)
        {
            rlist=rectypefld.split(',');
        }
        objectfieldinfo sfld;
        for(string r1 :rlist)
        {
            sfld=new objectfieldinfo();
            if(r1!='' || r1!=null)
            {
                //check if required
                sfld.apiname=r1;
                sfld.isrequired=false;
                for(String req:reqfldlist)
                {
                    if(r1.trim()==req.trim())
                    sfld.isrequired=true;
                }
                objectfieldlist.add(sfld);
            }
        }
        checkreloadpage =true;
    }
    public class objectfieldinfo
    {
        public string apiname{get;set;}             
        public boolean isrequired{get;set;}        
    }
}