Fieldset apex code in Visualforce page
A field set is a grouping of fields for same object. We can use dynamic
bindings to display field sets on our Visualforce pages. Fieldset is
very useful when we are working with managed package.
But if we are using custom controller or extension, then we may need
to query fieldset fields in SOQL query. So we will use dynamic SOQL
query for querying all fields of fieldset.
By using dynamic SOQL query in Apex and using fielset in visualforce and Apex code. Our code will become dynamic, then we can add, remover or reorder fields in fieldset. By doing so, our code will become dynamic. There is no need to modify code when we will do any change in fieldset.
In the example below, we will use fieldset to display account list on visualforce page. We will use dynamic SOQL query in Apex code.
First we need to create a fieldset. Go to Setup > Customize > Accounts > Field Set
Click on new. Enter all mandatory fields. Also drag and drop all required fields in fieldset.
Visualforce Page:
By using dynamic SOQL query in Apex and using fielset in visualforce and Apex code. Our code will become dynamic, then we can add, remover or reorder fields in fieldset. By doing so, our code will become dynamic. There is no need to modify code when we will do any change in fieldset.
In the example below, we will use fieldset to display account list on visualforce page. We will use dynamic SOQL query in Apex code.
First we need to create a fieldset. Go to Setup > Customize > Accounts > Field Set
Click on new. Enter all mandatory fields. Also drag and drop all required fields in fieldset.
Visualforce Page:
<
apex:page
controller
=
"AccountFieldSetController"
tabStyle
=
"Account"
>
<
apex:form
>
<
apex:pageblock
>
<
apex:pageBlockSection
title
=
"Account list"
collapsible
=
"false"
>
<
apex:pageBlockTable
value
=
"{!accList}"
var
=
"acc"
>
<
apex:repeat
value
=
"{!$ObjectType.Account.fieldsets.accountFieldSet}"
var
=
"fieldValue"
>
<
apex:column
value
=
"{!acc[fieldValue]}"
>
</
apex:column
>
</
apex:repeat
>
</
apex:pageBlockTable
>
</
apex:pageBlockSection
>
<
apex:pageBlockSection
title
=
"Account Dynamic query"
collapsible
=
"false"
>
<
apex:outputText
value
=
"Query is: {!queryString}"
/>
</
apex:pageBlockSection
>
</
apex:pageblock
>
</
apex:form
>
</
apex:page
>
Controller:
public
class
AccountFieldSetController {
public
String queryString{get;set;}
public
List<Account> accList{get;set;}
public
AccountFieldSetController(){
queryString =
'select id'
;
for
(Schema.FieldSetMember fld :SObjectType.Account.FieldSets.accountFieldSet.getFields()) {
queryString +=
', '
+ fld.getFieldPath();
}
queryString +=
' from Account limit 5'
;
acclist = Database.query(queryString);
}
}
We will get following output in visualforce page:
0 comments:
Post a Comment