function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Ramandeep_SinghRamandeep_Singh 

Display Data In Visual Force Page

Hi all,

I'm trying to display field's data in VF page. Function is like, when selectting the object from picklist which is in vfp the related fields will be displayed in another picklist. On clicking the botton the field's data related to the selected picklist value should be displayed on the Vfp.

Visual Force Page:
<apex:page controller="objectController">
    <apex:form > 
        <apex:pageBlock >
            <apex:pageBlockSection columns="4">
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="Object :"/> 
                    <apex:actionRegion >      
                        <apex:selectList value="{!selectedObject}" size="1">
                            <apex:selectOptions value="{!ObjectNames}"/>
                            <apex:actionSupport event="onchange" rerender="myFields,myFields1"/>
                        </apex:selectList>
                    </apex:actionRegion>                         
                </apex:pageBlockSectionItem>
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="Field 1"/>   
                    <apex:outputPanel id="myFields">   
                        <apex:actionRegion >  
                            <apex:selectList value="{!selectedField}" size="1">
                                <apex:selectOptions value="{!ObjectFields}"/>
                            </apex:selectList>
                        </apex:actionRegion>      
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="Field 2"/>   
                    <apex:outputPanel id="myFields1">   
                        <apex:actionRegion >  
                            <apex:selectList value="{!selectedField2}" size="1">
                                <apex:selectOptions value="{!ObjectFields}"/>
                            </apex:selectList>
                        </apex:actionRegion>      
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem >
                    <apex:commandButton action="{!output}" value="Select">
                        <apex:actionSupport event="onclick" rerender="mychart"/>
                    </apex:commandButton>
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
            <apex:pageBlockSection >
                <apex:pageBlockSectionItem >
                    <apex:pageBlockTable value="{!oList}" var="ac">
                        <apex:column value="{!ac['selectedField']}"/>
                        
                    </apex:pageBlockTable>
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
            
            
        </apex:pageBlock>
    </apex:form>
</apex:page>
ERROR: Invalid field selectedField for SObject Account // On clicking 
Custom Controller:
 
public class objectController
{
    public Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
    public List<sObject> oList {get; set;}
    public String selectedObject {get; set;}
    
    public String selectedField {get; set;}
	public String selectedField2 {get; set;}    
    
    
    Public objectController()
    {   
        selectedObject = 'Account';
    }
    
    public List<SelectOption> getObjectNames()
    {
        List<SelectOption> objNames = new List<SelectOption>();
        List<String> entities = new List<String>(schemaMap.keySet());
        entities.sort();
        for(String name : entities)
        {
            objNames.add(new SelectOption(name,name));
        }
        return objNames;
    }
    
    public List<SelectOption> getObjectFields()
    {
        Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
        Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
        Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
        List<SelectOption> fieldNames = new List<SelectOption>();
        for (String fieldName: fieldMap.keySet())
        {
            fieldNames.add(new SelectOption(fieldName,fieldName));
            //fieldMap.get(fieldName).getDescribe().getLabel();//It provides to get the object fields label.
        }
        return fieldNames;
    }
    public List<SelectOption> getObjectFields2()
    {
        Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
        Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
        Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
        List<SelectOption> fieldNames = new List<SelectOption>();
        for (String fieldName: fieldMap.keySet())
        {
            fieldNames.add(new SelectOption(fieldName,fieldName));
            //fieldMap.get(fieldName).getDescribe().getLabel();//It provides to get the object fields label.
        }
        return fieldNames;
    }
    
    public void output()
    {
        system.debug('object'+selectedObject);
        String soqlQuery = 'select '+selectedField+', id, '+selectedField2+' from '+selectedObject;
        system.debug(soqlQuery);
        oList= Database.query(soqlQuery);
        system.debug(olist);
    }
}

Please let me know were am I lacking. It would be really helpful.

Thanks and Regards,
Ramandeep
 
 
Best Answer chosen by Ramandeep_Singh
Ramandeep_SinghRamandeep_Singh
Hi Sandeep,

Thanks for your help. And somehow i managed to display the related data. 
Thanks for your reply.

Sharing the working code. So, it may help others.

Visualforce Page:
<apex:page controller="objectController">
    <apex:form > 
        <apex:pageMessages ></apex:pageMessages>
        <apex:pageBlock >
            <apex:pageBlockSection columns="4">
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="Object :"/> 
                    <apex:actionRegion >      
                        <apex:selectList value="{!selectedObject}" size="1">
                            <apex:selectOptions value="{!ObjectNames}"/>
                            <apex:actionSupport event="onchange" rerender="myFields,myFields1"/>
                        </apex:selectList>
                    </apex:actionRegion>                         
                </apex:pageBlockSectionItem>
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="X-Axies"/>   
                    <apex:outputPanel id="myFields">   
                        <apex:actionRegion >  
                            <apex:selectList value="{!selectedField}" size="1">
                                <apex:selectOptions value="{!ObjectFields}"/>
                            </apex:selectList>
                        </apex:actionRegion>      
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="Y-Axies"/>   
                    <apex:outputPanel id="myFields1">   
                        <apex:actionRegion >  
                            <apex:selectList value="{!selectedField2}" size="1">
                                <apex:selectOptions value="{!ObjectFields}"/>
                            </apex:selectList>
                        </apex:actionRegion>      
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem >
                    <apex:commandButton action="{!getchart}" value="show chart" rendered="{!not(isnull(selectedObject))}"/>
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
        </apex:pageBlock>
        
        <apex:pageBlock >
            <apex:pageBlockTable var="item" value="{!oList}">
                <apex:repeat var="f" value="{!selectedField}" >
                    <apex:column value="{!item[f]}"/>
                </apex:repeat>
                <apex:repeat var="e" value="{!selectedField2}" >
                    <apex:column value="{!item[e]}"/>
                </apex:repeat>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>

Apex Class:
global class objectController
{
    global Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
    global Map<string, sObject > objMap {get; set;}
    global List<sObject> oList {get; set;}
    global String selectedObject {get; set;}
    
    global String selectedField {get; set;}
	global String selectedField2 {get; set;}    
    
    
    global objectController()
    {   
        system.debug(objMap);
        selectedObject = 'Account';
        selectedField = 'name';
        selectedField2 = 'numberofemployees';
        sObject sObj = Schema.getGlobalDescribe().get(selectedObject).newSObject() ;
                
        //system.debug('@@sObj1@@' +sObj1);
        system.debug('object'+selectedObject);
        String soqlQuery = 'select '+selectedField+', id, '+selectedField2+' from '+selectedObject;
        system.debug(soqlQuery);
        oList= Database.query(soqlQuery);
        system.debug(olist);
         Map<Id, sObject> objMap = new Map<Id, sObject>(oList);
    }
    
    global List<SelectOption> getObjectNames()
    {
        List<SelectOption> objNames = new List<SelectOption>();
        List<String> entities = new List<String>(schemaMap.keySet());
        entities.sort();
        for(String name : entities)
        {
            objNames.add(new SelectOption(name,name));
        }
        return objNames;
    }
    
    global List<SelectOption> getObjectFields()
    {
        Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
         //system.debug('@@schemaMap@@+ schemaMap'+selectedObject);
        Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
         //system.debug('@@ObjectSchema@@'+ObjectSchema);
        Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
         //system.debug('@@fieldMap@@'+fieldMap);
        List<SelectOption> fieldNames = new List<SelectOption>();
         //system.debug('@@fieldNames@@'+fieldNames);
        for (String fieldName: fieldMap.keySet())
        {
            fieldNames.add(new SelectOption(fieldName,fieldName));
        }
        return fieldNames;
    }
    global List<SelectOption> getObjectFields2()
    {
        Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
        Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
        Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
        
        List<SelectOption> fieldNames = new List<SelectOption>();
        for (String fieldName: fieldMap.keySet())
        {
            fieldNames.add(new SelectOption(fieldName,fieldName));
        }
        return fieldNames;
    }
    
    global void getchart()
    {
       
         sObject sObj = Schema.getGlobalDescribe().get(selectedObject).newSObject() ;
                
        //system.debug('@@sObj@@' +sObj);
        //system.debug('object'+selectedObject);
        String soqlQuery = 'select '+selectedField+','+selectedField2+' from '+selectedObject;
        //system.debug(soqlQuery);
        oList= Database.query(soqlQuery);
        //system.debug(olist);
        //objMap.putAll(olist);
       
    }     
}

Regards,
Ramandeep 

All Answers

sandeep madhavsandeep madhav
Hi,

Hope this helps,

apex:selectList will return the name of the filed, you need to use API name for query use.

Mark this as best answer if it helps.
Ramandeep_SinghRamandeep_Singh
Hi Sandeep,

Thanks for your help. And somehow i managed to display the related data. 
Thanks for your reply.

Sharing the working code. So, it may help others.

Visualforce Page:
<apex:page controller="objectController">
    <apex:form > 
        <apex:pageMessages ></apex:pageMessages>
        <apex:pageBlock >
            <apex:pageBlockSection columns="4">
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="Object :"/> 
                    <apex:actionRegion >      
                        <apex:selectList value="{!selectedObject}" size="1">
                            <apex:selectOptions value="{!ObjectNames}"/>
                            <apex:actionSupport event="onchange" rerender="myFields,myFields1"/>
                        </apex:selectList>
                    </apex:actionRegion>                         
                </apex:pageBlockSectionItem>
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="X-Axies"/>   
                    <apex:outputPanel id="myFields">   
                        <apex:actionRegion >  
                            <apex:selectList value="{!selectedField}" size="1">
                                <apex:selectOptions value="{!ObjectFields}"/>
                            </apex:selectList>
                        </apex:actionRegion>      
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                
                <apex:pageBlockSectionItem >
                    <apex:outputlabel value="Y-Axies"/>   
                    <apex:outputPanel id="myFields1">   
                        <apex:actionRegion >  
                            <apex:selectList value="{!selectedField2}" size="1">
                                <apex:selectOptions value="{!ObjectFields}"/>
                            </apex:selectList>
                        </apex:actionRegion>      
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem >
                    <apex:commandButton action="{!getchart}" value="show chart" rendered="{!not(isnull(selectedObject))}"/>
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
        </apex:pageBlock>
        
        <apex:pageBlock >
            <apex:pageBlockTable var="item" value="{!oList}">
                <apex:repeat var="f" value="{!selectedField}" >
                    <apex:column value="{!item[f]}"/>
                </apex:repeat>
                <apex:repeat var="e" value="{!selectedField2}" >
                    <apex:column value="{!item[e]}"/>
                </apex:repeat>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>

Apex Class:
global class objectController
{
    global Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
    global Map<string, sObject > objMap {get; set;}
    global List<sObject> oList {get; set;}
    global String selectedObject {get; set;}
    
    global String selectedField {get; set;}
	global String selectedField2 {get; set;}    
    
    
    global objectController()
    {   
        system.debug(objMap);
        selectedObject = 'Account';
        selectedField = 'name';
        selectedField2 = 'numberofemployees';
        sObject sObj = Schema.getGlobalDescribe().get(selectedObject).newSObject() ;
                
        //system.debug('@@sObj1@@' +sObj1);
        system.debug('object'+selectedObject);
        String soqlQuery = 'select '+selectedField+', id, '+selectedField2+' from '+selectedObject;
        system.debug(soqlQuery);
        oList= Database.query(soqlQuery);
        system.debug(olist);
         Map<Id, sObject> objMap = new Map<Id, sObject>(oList);
    }
    
    global List<SelectOption> getObjectNames()
    {
        List<SelectOption> objNames = new List<SelectOption>();
        List<String> entities = new List<String>(schemaMap.keySet());
        entities.sort();
        for(String name : entities)
        {
            objNames.add(new SelectOption(name,name));
        }
        return objNames;
    }
    
    global List<SelectOption> getObjectFields()
    {
        Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
         //system.debug('@@schemaMap@@+ schemaMap'+selectedObject);
        Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
         //system.debug('@@ObjectSchema@@'+ObjectSchema);
        Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
         //system.debug('@@fieldMap@@'+fieldMap);
        List<SelectOption> fieldNames = new List<SelectOption>();
         //system.debug('@@fieldNames@@'+fieldNames);
        for (String fieldName: fieldMap.keySet())
        {
            fieldNames.add(new SelectOption(fieldName,fieldName));
        }
        return fieldNames;
    }
    global List<SelectOption> getObjectFields2()
    {
        Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
        Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
        Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
        
        List<SelectOption> fieldNames = new List<SelectOption>();
        for (String fieldName: fieldMap.keySet())
        {
            fieldNames.add(new SelectOption(fieldName,fieldName));
        }
        return fieldNames;
    }
    
    global void getchart()
    {
       
         sObject sObj = Schema.getGlobalDescribe().get(selectedObject).newSObject() ;
                
        //system.debug('@@sObj@@' +sObj);
        //system.debug('object'+selectedObject);
        String soqlQuery = 'select '+selectedField+','+selectedField2+' from '+selectedObject;
        //system.debug(soqlQuery);
        oList= Database.query(soqlQuery);
        //system.debug(olist);
        //objMap.putAll(olist);
       
    }     
}

Regards,
Ramandeep 
This was selected as the best answer