Salesforce Bakery

Tasty pizza baked in my small oven...

Friends... here is how we can bind sObject fields dynamically present in a specific fieldset...

The controller code looks as given below
--------------------------------------------------------------------------------
public class FieldsetController {
    public FieldsetController(ApexPages.StandardController controller) {
        fsMember = new List<Schema.FieldSetMember>();
        formON = false;
    }

    public String str{get;set;}
    public Account acc{get;set;}
    public Boolean formON {get;set;}
    public Schema.FieldSet field{get;set;}
    //public Map<String, Schema.FieldSet> FsMap {get;set;}
    public List<Schema.FieldSetMember> fsMember {get;set;}
     
    public void displayFieldset() {
        try{
            if( str != '' && str != 'none' && str != null ){  
                Schema.DescribeSObjectResult d = Account.sObjectType.getDescribe();
                Map<String, Schema.FieldSet> FsMap = d.fieldSets.getMap();
                System.debug('---------Fieldsets'+FsMap);
                Schema.FieldSet fs = FsMap.get(str);
                System.debug('-----------Fieldset'+fs);
                System.debug('test------'+fs.getFields());
                fsMember = new List<Schema.FieldSetMember>();
                for( Schema.FieldSetMember f : fs.getFields() ){
             
                    fsMember.add(f);
                }
                formON = true;
            }else {
                formON = false;
                fsMember.clear();
                fsMember = new List<Schema.FieldSetMember>();
            }
            System.debug('Final-----------------'+fsMember);
        }catch(Exception ex){
            System.debug('----------EXCEPTION HAS OCCURRED-------------'+ex.getMessage());
        }

    }

}

The VisualForce code is as given below.
--------------------------------------------------------------------
<apex:page standardcontroller="account" extensions="FieldsetController" tabStyle="Account">
     <apex:pageBlock >
         <apex:form id="formPickList">    
             <apex:pageBlockSection title="Please Select the Fieldset">
                    <apex:selectList label="Fieldsets" id="Picklist1" value="{!str}" size="1" >
                            <apex:selectOption itemValue="none" itemLabel="None"/>
                            <apex:selectOption itemValue="FieldSet" itemLabel="FieldSet"/>
                            <apex:selectOption itemValue="FieldSet1" itemLabel="FieldSet1"/>
                            <apex:selectOption itemValue="FieldSet2" itemLabel="FieldSet2"/>
                            <apex:actionSupport event="onchange" action="{!displayFieldset}" reRender="formContainer,pbsContainer"/>
                    </apex:selectList>
            </apex:pageBlockSection>
        </apex:form>

        <apex:form id="formContainer" >
            <apex:pageBlockSection id="pbsContainer" Title="Input the Account Details" rendered="{!formON}">
                <apex:repeat value="{!fsMember}" var="f">
                    <apex:inputField value="{!Account[f]}" />
                </apex:repeat>
            </apex:pageBlockSection>
        </apex:form>
    </apex:pageBlock>
</apex:page>

--------------------------------------------------------------------------------------
Tasty.........!!! isn't it ??? :-)

But !!! What's next to get out of the oven ... ???
mmmmmm....
Yesss...! Exposing REST Webservice on force.com. Now it's available. Please click here

No comments:

Post a Comment