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
Sujendran Sundarraj 8Sujendran Sundarraj 8 

Issue with actionsupport inside a selectlist

Hi, 
I have a requirement as once the objectname is selected from the selectlistoptions it has to display all its field names. I am trying to acheive this but the actionsupport is not calling the method in action(action="{!getfieldnames}").Please help. 

VF page: 
<apex:page controller="Workbenchlike" >
<style>
td{
text-align:center;
}
</style>
<apex:form >

<div style="text-align:center;font-size:20px">

    Select from the list  :-
<apex:outputPanel >
<apex:selectList size="1" value="{!selectedobj}" >
<apex:selectOptions value="{!selectobjs}"/>
<apex:actionSupport action="{!getfieldnames}" event="onchange"  reRender="table"/>

</apex:selectList>
</apex:outputPanel>
</div>
<div style="text-align:center; font-size:15px">
<table id="table" >
<tr> 
<td>
FieldNames:<br/>
<apex:selectList ></apex:selectList>
</td>
<td>
Selected Values:<br/>
<apex:selectList ></apex:selectList>
</td>
</tr>
</table>
</div>
  </apex:form>
</apex:page>

Controller: 

public class Workbenchlike {
public string selectedobj {get; set;}
public map<string, schema.sobjectType> selectobjs {get; set;}

public workbenchlike(){
selectobjs = schema.getGlobalDescribe();
system.debug('output is'+selectobjs);
system.debug('selectedobject' +selectedobj);
}
public void getfieldnames(){
system.debug('selectedobject' +selectedobj);

}

}

Thank you. 
Regards, 

Sujendran.

Best Answer chosen by Sujendran Sundarraj 8
Shaik Naga janiShaik Naga jani
Hi Sujendran,
I updated the code and it is working check below code.
Apex Class
public class Workbenchlike {
    public string strObjectName {get;set;}
    public list<SelectOption> lstObjNames {get; set;}
    
    public workbenchlike(){
        retriveObjectNames();
    }
    
    public void retriveObjectNames() {
        lstObjNames = new list<SelectOption>();
        map<string, schema.sobjectType> selectobjs = schema.getGlobalDescribe();
        for ( Schema.SObjectType objIterator : selectobjs.values() ) {
            Schema.DescribeSObjectResult objResult = objIterator.getDescribe();
            lstObjNames.add(new SelectOption(objResult.getName(), objResult.getLabel()));
        }
        system.debug('lstObjNames ===>  '+lstObjNames);
    }
    
    public void retriveFieldNames(){
        system.debug('strObjectName ======>  ' +strObjectName);
        
    }
    
}
Visualforce page
<apex:page controller="Workbenchlike" >
    <style>
        td{
        text-align:center;
        }
    </style>
    <apex:form >
        <apex:pageBlock>
            <apex:pageBlockSection columns="1" collapsible="false">
                <apex:pageBlockSectionItem>
                     <apex:outputLabel value="Select from the list  :-" />
                    <apex:selectList size="1" value="{!strObjectName}" multiselect="false" >
                        <apex:selectOptions value="{!lstObjNames}"/>
                        <apex:actionSupport action="{!retriveFieldNames}" event="onchange" reRender="filedname"/>  
                    </apex:selectList>
                </apex:pageBlockSectionItem>
                
            </apex:pageBlockSection>
        </apex:pageBlock>
        <apex:outputPanel id="filedname">
            <div style="text-align:center; font-size:15px"  >
                <table>
                    <tr> 
                        <td>
                            FieldNames:<br/>
                            <apex:selectList ></apex:selectList>
                        </td>
                        <td>
                            Selected Values:<br/>
                            <apex:selectList ></apex:selectList>
                        </td>
                    </tr>
                </table>
            </div>
        </apex:outputPanel>
    </apex:form>
</apex:page>

Kindly mark this as solved if the reply was helpful.
Thanks
Shaik

All Answers

Shaik Naga janiShaik Naga jani
Hi Sujendran,
I updated the code and it is working check below code.
Apex Class
public class Workbenchlike {
    public string strObjectName {get;set;}
    public list<SelectOption> lstObjNames {get; set;}
    
    public workbenchlike(){
        retriveObjectNames();
    }
    
    public void retriveObjectNames() {
        lstObjNames = new list<SelectOption>();
        map<string, schema.sobjectType> selectobjs = schema.getGlobalDescribe();
        for ( Schema.SObjectType objIterator : selectobjs.values() ) {
            Schema.DescribeSObjectResult objResult = objIterator.getDescribe();
            lstObjNames.add(new SelectOption(objResult.getName(), objResult.getLabel()));
        }
        system.debug('lstObjNames ===>  '+lstObjNames);
    }
    
    public void retriveFieldNames(){
        system.debug('strObjectName ======>  ' +strObjectName);
        
    }
    
}
Visualforce page
<apex:page controller="Workbenchlike" >
    <style>
        td{
        text-align:center;
        }
    </style>
    <apex:form >
        <apex:pageBlock>
            <apex:pageBlockSection columns="1" collapsible="false">
                <apex:pageBlockSectionItem>
                     <apex:outputLabel value="Select from the list  :-" />
                    <apex:selectList size="1" value="{!strObjectName}" multiselect="false" >
                        <apex:selectOptions value="{!lstObjNames}"/>
                        <apex:actionSupport action="{!retriveFieldNames}" event="onchange" reRender="filedname"/>  
                    </apex:selectList>
                </apex:pageBlockSectionItem>
                
            </apex:pageBlockSection>
        </apex:pageBlock>
        <apex:outputPanel id="filedname">
            <div style="text-align:center; font-size:15px"  >
                <table>
                    <tr> 
                        <td>
                            FieldNames:<br/>
                            <apex:selectList ></apex:selectList>
                        </td>
                        <td>
                            Selected Values:<br/>
                            <apex:selectList ></apex:selectList>
                        </td>
                    </tr>
                </table>
            </div>
        </apex:outputPanel>
    </apex:form>
</apex:page>

Kindly mark this as solved if the reply was helpful.
Thanks
Shaik
This was selected as the best answer
Sujendran Sundarraj 8Sujendran Sundarraj 8
Super, It worked!! Thank you.