I have a VF page to select Object and Picklistfield and then list out picklist values, if the pick list field is dependent picklist then the values need to be concatenated list of picklist value of controlling picklist and value of dependent picklist.
VF Page is
<!-- call custom controller -->
<apex:page controller="DVUController">
<apex:form id="form">
<apex:pageBlock title="Welcome {!$User.FirstName} to the Data Validation Utilities Page">
<apex:pageBlockSection columns="5">
<apex:pageblocksection title="Select Object" columns="1">
<apex:selectList value="{!selectedObject}" size="1">
<apex:selectOptions value="{!objectOptions}" />
<apex:actionSupport reRender="form" event="onchange" />
</apex:selectList>
</apex:pageblocksection>
<apex:pageblocksection title="Picklist Fields" columns="1">
<apex:pageblocktable value="{!picklistfields}" var="results">
<apex:column value="{!results}"></apex:column>
</apex:pageblocktable>
</apex:pageblocksection>
<apex:pageblocksection title="Select Picklist Field" columns="1">
<apex:selectList value="{!selectedPicklistField}" size="1">
<apex:selectOptions value="{!pickListFieldOptions}" />
</apex:selectList>
</apex:pageblocksection>
<apex:pageblocksection title="Picklist Values" columns="1">
<apex:pageblocktable title="Picklist Field Values" value="{!picklistvalues}" var="results">
<apex:column title="Picklist Field Values" value="{!results}"></apex:column>
</apex:pageblocktable>
</apex:pageblocksection>
</apex:pageblocksection>
</apex:pageBlock>
</apex:form>
</apex:page>
The controller is
public class DVUController {
public String selectedObject { get; set; }
public String selectedField { get; set; }
public String selectedPicklistField { get; set; }
public List<String> picklistFields=new List<String>();
public List<String> picklistValues=new List<String>();
//generate list of Objects from the Org using Dynamic Apex
public SelectOption[] getObjectOptions() {
SelectOption[] results = new SelectOption[] { new SelectOption('','-- none --') };
for(SObjectType sobjectType: Schema.getGlobalDescribe().values()) {
DescribeSObjectResult dsrao = sobjectType.getDescribe();
results.add(new SelectOption(dsrao.getName(), dsrao.getLabel()));
results.sort();
}
return results;
}
//generate list of names of PicklistFields and MultiPicklistFields from the Object
public List<String> getPicklistFields(){
if(selectedObject != NULL){
//picklistfields = new List<String>();
Schema.DescribeSObjectResult dsr = Schema.getGlobalDescribe().get(selectedObject).getDescribe();
Map<String,Schema.SObjectField> fieldMap = dsr.fields.getMap();
for(String fieldName : fieldMap.keySet()) {
Schema.SObjectField field = fieldMap.get(fieldName);
Schema.DescribeFieldResult dfr = field.getDescribe();
if( dfr.getType()==Schema.DisplayType.Picklist || dfr.getType()==Schema.DisplayType.MultiPicklist ) {
picklistfields.add(fieldName);
}
system.debug('==>picklistfields==>'+picklistfields);
}
return picklistfields;
}
return NULL;
}
//generate list of PicklistFields from the Object as a dropdown
public SelectOption[] getPicklistFieldOptions() {
SelectOption[] results = new SelectOption[] { new SelectOption('','-- none --') };
if(selectedObject != null) {
for(SObjectField sObjectField: Schema.getGlobalDescribe().get(selectedObject).getDescribe().fields.getMap().values()) {
DescribeFieldResult dfr = sObjectField.getDescribe();
if( dfr.getType()==Schema.DisplayType.Picklist || dfr.getType()==Schema.DisplayType.MultiPicklist ) {
results.add(new SelectOption(dfr.getName(), dfr.getLabel()));
results.sort();
}
}
}
return results;
}
//generate list of Picklistvalues from the Picklist selected
public List<String> getPicklistValues(){
if(selectedPicklistField != NULL && selectedObject != NULL){
//pickListValues = new List<String>();
Schema.DescribeSObjectResult dsr = Schema.getGlobalDescribe().get(selectedObject).getDescribe();
Map<String,Schema.SObjectField> fieldMap = dsr.fields.getMap();
for(String fieldName : fieldMap.keySet()) {
Schema.SObjectField field = fieldMap.get(fieldName);
Schema.DescribeFieldResult dfr = field.getDescribe();
List<Schema.PickListEntry> picks = dfr.getPicklistValues();
for(Schema.picklistentry v:picks){
pickListValues.add(v.getValue());
system.debug('==>pickListValues==>'+pickListValues);
}
return picklistValues;
}
}
return picklistValues;
}
}
When I select the object and reset the picklist field doesnt reset, and when I select the picklist field for some reason Picklist values dont get displayed.Can some one please help