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
Jaymin Sutarwala 7Jaymin Sutarwala 7 

Dynamic picklist component

I am trying to create a dynamic picklist component in my VF page. It is displaying the picklist but it is not rendering any values in the picklist. Can anyone take a look and see if they can figure out something?

User-added image
<apex:page standardController="Quote" standardStylesheets="true" extensions="TestDynamicTableExtension">
    <apex:form >
    	<apex:pageBlock id="tDTPageBlock">
            <apex:pageBlockSection >
                	<apex:commandButton value="Add a Site"/>
            		<apex:commandButton value="Add FY"/>
                    <apex:dynamicComponent componentValue="{!dynamicTable}" />
                    <!--apex:pageBlockTable value="" var="">
                    </apex:pageBlockTable-->
            </apex:pageBlockSection>
    	</apex:pageBlock>
	</apex:form>
</apex:page>
 
public class TestDynamicTableExtension {
	public List<dynamicTableRow> dynamicTRows = new List<dynamicTableRow>();
	public transient List<Schema.PicklistEntry> ple;
	public transient Schema.DescribeFieldResult fieldResult;
    public transient List<Component.Apex.SelectOption> options {get; set;}
    	
	public TestDynamicTableExtension(ApexPages.standardController stdController){
		initdynamicTRowsList();
		//createTableOnPageLoad();
	}
	
	/*public List<Component.Apex.SelectOption> getOptions(){
		fieldResult = Quote.Primary_Site__c.getDescribe();
		ple = fieldResult.getPicklistValues();
		for(Schema.PicklistEntry f : ple){
			options.add(new Component.Apex.SelectOption(itemlabel=f.getLabel(), itemvalue=f.getValue()));
			//Component.Apex.SelectOption so = new Component.Apex.SelectOption();
		}
		System.debug('Primary sites: ' + options);
		return options;
	}*/
	
	public void initdynamicTRowsList(){
		dynamicTableRow dtr = new dynamicTableRow();
		dtr.saveDeleteCheckbox = false;
		dtr.primarySite = null;
		dynamicTRows.add(dtr);
	}

	public Component.Apex.PageBlockTable getDynamicTable(){
		Component.Apex.PageblockTable dynamicTbl = new Component.Apex.PageblockTable();
		dynamicTbl.value = dynamicTRows;
		dynamicTbl.var = 'tRow';
		
		//Column 1 - Save Delete checkbox
		Component.Apex.Column tCol1 = new Component.Apex.Column();
		Component.Apex.InputCheckBox saveDelCB = new Component.Apex.InputCheckBox();
		tCol1.childComponents.add(saveDelCB);
		dynamicTbl.childComponents.add(tCol1);
		
		//Column 2 - Primary site picklist
		Component.Apex.Column tCol2 = new Component.Apex.Column();
		tCol2.headerValue = 'Primary site';
		Component.Apex.SelectList primarySite = new Component.Apex.SelectList(multiselect=false);
		//Component.Apex.SelectOptions primarySiteValues = new Component.Apex.SelectOptions();
		
		fieldResult = Quote.Primary_Site__c.getDescribe();
		ple = fieldResult.getPicklistValues();
		options = new List<Component.Apex.SelectOption>();
		for(Schema.PicklistEntry f : ple){
			options.add(new Component.Apex.SelectOption(itemlabel=f.getLabel(), itemvalue=f.getValue()));
		}

        primarySite.expressions.Value = '{!options}';
        tCol2.childComponents.add(primarySite);
        dynamicTbl.childComponents.add(tCol2);

		//Column 3 - Year 1
		Component.Apex.Column tCol3 = new Component.Apex.Column();
		tCol3.headerValue = 'Year 1';
		Component.Apex.InputText yr1 = new Component.Apex.InputText();
		yr1.style = 'width: 50px';
		tCol3.childComponents.add(yr1);
		dynamicTbl.childComponents.add(tCol3);
		
		return dynamicTbl;
	}
	
	public class dynamicTableRow{
		Boolean saveDeleteCheckbox {get; set;}
		String primarySite {get; set;}
		Map<String, Decimal> tcvMap = new Map<String, Decimal>();
	}
    
}