Monday, 6 April 2015

How to Use Dynamic Object in Visualforce

public sObject sObjectToBind {get;set;}
public String libraryObjectName{get;set;}
public map<String , String> mapFieldToShow{get;set;}
  public Map<String, Map<string,string>>  UploadData{get;set;}


Map<String , String> uploadMap = new Map<String , String>();

libraryObjectName='Test__c';
  mapFieldToShow.put(Label,apiName);
        uploadMap.put(Label,'');
        UploadData.put(apiName,uploadMap);



Map<String , Schema.SObjectType> globalDescription = Schema.getGlobalDescribe();
        Schema.sObjectType sObjType = globalDescription.get(libraryObjectName);
     
        sObjectToBind = sObjType.newSObject();



 Map<String , String> uploadMap = new Map<String , String>();
     
       for(String lstfieldItem:mapFieldToShow.keyset())
        {
       
          uploadMap.put(lstfieldItem,String.valueOf(sObjectToBind.get(mapFieldToShow.get(lstfieldItem))));
          UploadData.put(mapFieldToShow.get(lstfieldItem),uploadMap);
           uploadMap = new Map<String , String>();
        }
       
     




use Map or list for api names


 <apex:repeat value="{!UploadData}" var="outerKey">
               <apex:pageBlockSection >
                 <apex:repeat value="{!UploadData[outerKey]}" var="innerKey">
             
                   <apex:pageBlockSectionItem rendered="{!IF(innerKey !='filename',(IF(innerKey !='UniqueId',(IF(innerKey !=referencelabel,true,false)),false)),false)}">
                        <apex:outputLabel value="{!innerKey}"  />
                 
                   <!-- <apex:inputText id="myInputField" value="{!UploadData[outerKey][innerKey]}" required="true"   />-->
                 
                   <apex:inputfield id="myInputField" value="{!sObjectToBind[outerKey]}"    />
                    </apex:pageBlockSectionItem>
                  </apex:repeat>



No comments:

Post a Comment