1

The way I am currently getting the inputfield picklist values into my custom controller is by using a javascript to find the selected value like this:

function CallPick1(id) {
        var type = document.getElementById(id).value;
       //alert(type)
        pick1(type);
    }

the pick1(type); calls an apex:actionFunction with name "pick1" which passes the value of the picklist to a custom controller like so:

<apex:actionFunction name="pick1" action="{!passField}" rerender="theform">
<apex:param name="getPick1" value=""/>
</apex:actionFunction>

And it pulls the value of the picklist from the vf page into an apex controller with the function !passField like this:

public void passField() {
        String pickvalue1 =System.currentPageReference().getParameters().get('getPick1');
        system.debug('Picklist 1 Value: '+pickvalue1);
    }

I have the same functions, etc for pick2. Although I need it so that if pick1's value changes to A then pick2's value should change to B and it needs to display the value of pick2 on the vf page inside the picklist selector. I still need pick2 to show other values inside the picklist and still be able to change pick2's values however.

0
    <apex:page controller="TestClassTwo">
    <apex:form>
        <apex:selectList value="{!countries}" size="1" onchange="someapexcall()">
            <apex:selectOptions value="{!items}"/>
        </apex:selectList><p/> 
        <apex:selectList value="{!capitalval}" size="1" id="out2">
            <apex:selectOptions value="{!Items2}"/>
        </apex:selectList><p/>
        <apex:actionFunction name="someapexcall" action="{!updatePick}" rerender="out2"/>
    </apex:form> 
</apex:page>

    public class TestClassTwo {
    public String countries{get;set;}
    public String capitalval{get;set;}
    Map<String,String> somemap=new Map<String,String>();
    public List<SelectOption> Items{get;set;}
    public List<SelectOption> Items2{get;set;}
        public TestClassTwo(){
            Items2 = new List<SelectOption>();
            Items2.add(new SelectOption('DC','DC'));
            Items2.add(new SelectOption('Quebec','Quebec'));
            Items2.add(new SelectOption('Colombo','Colombo'));
            somemap.put('US','DC');
            somemap.put('CANADA','Quebec');
            somemap.put('Sri Lanka','Colombo');
            List<SelectOption> options = new List<SelectOption>();
            options.add(new SelectOption('US','US'));
            options.add(new SelectOption('CANADA','Canada'));
            options.add(new SelectOption('Sri Lanka','Sri Lanka'));
            Items=options;
        }
        public void updatePick(){
            capitalval=somemap.get(countries);
        }
    }

This Kinda does what's wanted up there.

3
  • Not exactly what I'm looking for. I need it to update the chosen value on an <apex:InputField> with preexisting values, not adding new ones. Dec 26 '19 at 14:14
  • Can you add your picklists or add some more code?
    – user61140
    Dec 26 '19 at 14:19
  • My picklists are defined as: <apex:inputField id="pick1" value="{!Product2.List_1__c}" onchange="CallPick1('{!$Component.pick1}');"/> Dec 26 '19 at 18:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.