898
Dynamic Visualforce Components Example:
Example of generate a dynamic input form for Account object
VisualForce Page:
<apex:page standardController="Account" extensions="DynamicAccountForm">
<!-- Create section header dynamically -->
<apex:dynamicComponent componentValue="{!SectionHeader}"/>
<apex:form >
<!-- Create dynamic input form for account object -->
<apex:dynamicComponent componentValue="{!ActionForm}"/>
</apex:form>
</apex:page> Apex Class:
public with sharing class DynamicAccountForm
{
public DynamicAccountForm(Apexpages.standardController ctlr)
{
//constructor
}
//Create a page block dynamically
public Component.Apex.PageBlock getActionForm()
{
Component.Apex.PageBlock pb = new Component.Apex.PageBlock();
//creating an input field dynamically
Component.Apex.InputField name = new Component.Apex.InputField();
name.expressions.value = '{!Account.Name}';
name.id = 'name';
Component.Apex.OutputLabel label = new Component.Apex.OutputLabel();
label.value = 'First Name';
label.for = 'name';
//Use the above block to create other input fields
Component.Apex.CommandButton save = new Component.Apex.CommandButton();
save.value = 'Save';
save.expressions.action = '{!Save}';
pb.childComponents.add(label);
pb.childComponents.add(name);
pb.childComponents.add(save);
return pb;
}
//create section header dynamically
public Component.Apex.SectionHeader getSectionHeader()
{
Component.Apex.SectionHeader sh = new Component.Apex.SectionHeader();
sh.title = 'Create Account';
return sh;
}
}