ラベル

2021-08-29

Salesforce - Visualforce - apex:selectList


apex:selectList のメモ書き
  • 任意の選択リスト型の入力項目を表示する
※ 2021/09/06: 「SelectOption」のラベルと値がの設定が逆だったため修正





■ select 

VFPage

<apex:selectList label="選択リスト" value="{!option}" size="1" >
        <apex:selectOptions value="{!options}"/>
</apex:selectList>

※ 複数選択リストにする場合は、「apex:selectList コンポーネント」に「multiselect="true"」属性を追加する
※ 「size="1"」表示される選択肢を 1 個にする

Apex

public class SampleController {

	public String option { get; set; }
	public List<SelectOption> options { get; set; }

	public SampleController(ApexPages.StandardController controller) {

		this.option = '';
		this.options = this.getSelectOption(`オブジェクト名`, `選択リストのフィールド名`);

	}

	public List<SelectOption> getSelectOption(Strin sObjectName, String fieldName) {
		List<SelectOption> retval = new List<SelectOption>();
        retval.add(new SelectOption('', '下記から選択してください。', true));	// ラベルを表示・非選択
		Schema.DescribeFieldResult f = Schema.getGlobalDescribe().get(sObjectName).getDescribe().fields.getMap().get(fieldName).getDescribe();
		List<Schema.PicklistEntry> pickList = f.getPicklistValues();
		for(Schema.PicklistEntry pick : pickList) {
			if(pick.isActive()) {
				retval.add(new SelectOption(pick.getValue(), pick.getLabel()));		// ラベルを表示・選択可能
			}
		}
		return retval;
	}

}



ref: