Saturday, April 6, 2013

Displaying object's fields in Pageblocktable





VisualforcevPage:


<apex:page controller="objectcls">
    <apex:form >
        <apex:pageBlock >
            <apex:pageblockSection title="Objects" columns="1">
                <apex:actionFunction name="fieldscall" action="{!fieldsmethod}"/>
                <apex:selectList value="{!selectedobj}" size="1" onchange="fieldscall()">
                    <apex:selectOptions value="{!orgobj}"/>
                </apex:selectList>
            </apex:pageblockSection>            
               <apex:pageblocktable value="{!objfields}" var="of" >
                   <apex:column value="{!of}"/>
                </apex:pageblocktable>          
        </apex:pageBlock>
    </apex:form>
</apex:page>

Apex Class:


public with sharing class objectcls {
  /* public List<Schema.SObjectField> lstfields{get; set;}
   public List<string> objfields { get; set; }*/

    public List<selectoption> orgobj {get; set; }
    public String selectedobj { get; set; }
    
    public objectcls(){
        orgobj=new List<selectoption>();
        List<Schema.SObjecttype> lo= Schema.getGlobalDescribe().values();
        for(Schema.SObjecttype l:lo){
            orgobj.add(new selectoption(string.valueof(l),string.valueof(l)));
            orgobj.sort();
                                    }
                       }
    
   /* public PageReference fieldsmethod() {

        objfields=new List<string>();
        if(selectedobj=='Account'){
        Map<string,Schema.SobjectField> mp= Schema.Sobjecttype.Account.fields.getmap();
        List<Schema.SobjectField> lstfields=mp.values();
         for(Schema.SobjectField lf:lstfields){
            objfields.add(String.valueof(lf));
                                             } 
                                  }
        if(selectedobj=='Contact'){
        Map<string,Schema.SobjectField> mp= Schema.Sobjecttype.Contact.fields.getmap();
        List<Schema.SobjectField> lstfields=mp.values();
         for(Schema.SobjectField lf:lstfields){
            objfields.add(String.valueof(lf));
                                             } 
                                  }
        if(selectedobj=='Opportunity'){
        Map<string,Schema.SobjectField> mp= Schema.Sobjecttype.Opportunity.fields.getmap();
        List<Schema.SobjectField> lstfields=mp.values();
         for(Schema.SobjectField lf:lstfields){
            objfields.add(String.valueof(lf));
                                             } 
                                      }
        if(selectedobj=='Lead'){
        Map<string,Schema.SobjectField> mp= Schema.Sobjecttype.Lead.fields.getmap();
        List<Schema.SobjectField> lstfields=mp.values();
         for(Schema.SobjectField lf:lstfields){
            objfields.add(String.valueof(lf));
                                             } 
                               }
        if(selectedobj=='Case'){
        Map<string,Schema.SobjectField> mp= Schema.Sobjecttype.Case.fields.getmap();
        List<Schema.SobjectField> lstfields=mp.values();
         for(Schema.SobjectField lf:lstfields){
            objfields.add(String.valueof(lf));
                                             } 
                               }
                   return null;
                                          } */
    private Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
    public List <string> objfields {get; set;}
  /*  public List <SelectOption> orgobj 
              {public get; private set;}
    public String  selectedobj{get; set;} 
// Intialize objectNames and fields      
    public objectcls() {
        orgobj = initObjNames();
        objfields = new List<Pair>();
    }
// Populate SelectOption list  -       
// find all sObjects available in the organization      
    private List<SelectOption> initObjNames() {
        List<SelectOption> objNames = 
            new List<SelectOption>();
        List<String> entities = 
            new List<String>(schemaMap.keySet());
        entities.sort();
        for(String name : entities)
            objNames.add(new SelectOption(name,name));
        return objNames;
    } */                                                                         
        public pagereference fieldsmethod() {
           objfields=new List<string>();
           Map <String, Schema.SObjectField> fieldMap = 
            schemaMap.get(selectedobj).getDescribe().fields.getMap();
                       for(Schema.SObjectField sfield : fieldMap.values()){
                schema.describefieldresult dfield = 
                    sfield.getDescribe();       
               // Pair field = new Pair();      
              //field.key = dfield.getname();
                objfields.add(dfield.getname());                                                    
                                                                }                                                                                    
                  return null;                                                                                         
                                         }  
         /*   public class Pair {
                  public String key {get; set;}
                  public String val {get; set;}       
                              }   */                                                                                      
                                     }



No comments:

Post a Comment