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
TylorTylor 

Visualforce Pagesにて、選択リストの制御項目を使う方法

Viasualforce Pagesにて、画面を開発しています。

 

そこで、カスタム項目で作成した選択リスト(制御項目と連動項目)を使用したいのですが、

単純に<apex:inputField>で作成しても、ただすべての値が表示されてしまい、

うまく制御できません。

 

何か方法、ありますでしょうか?:mansad:

Best Answer chosen by Admin (Salesforce Developers) 
timatima

actionSupportタグとコントローラを使用して似たことができるように思います。

下記の記事が参考になるかと思います。

 

Dependent Multilevel Selectlists

 

 

記事の中でのポイントのみ抜粋します。

 

 Visualforce Page(抜粋)

 

<apex:selectList value="{!selectedLevel1}" id="cbxlevel1" size="1" required="true">
<apex:selectOptions value="{!level1items}"/>
<apex:actionSupport event="onchange" rerender="cbxlevel2"/>
</apex:selectList>

<apex:selectList value="{!selectedLevel2}" id="cbxlevel2" size="1">
<apex:selectOptions value="{!level2items}"/>
<apex:actionSupport event="onchange" rerender="cbxlevel3"/>
</apex:selectList>

 

 

 Controller

 

public List<selectOption> level2Items {
get {
List<selectOption> options = new List<selectOption>();

if (selectedLevel1 != NULL) {
options.add(new SelectOption('','-- Choose a Category --'));
for (Cat2__c cat : [select Id, Name from Cat2__c Where Cat1__c = :selectedLevel1 Order By Name])
options.add(new SelectOption(cat.Id,cat.Name));
}

return options;
}
set;
}

 

 

 

一つ目のselectListがonchangeされたタイミングで、連動させたい二番目のselectListの中身を生成しています。

01-25-2010 04:43 PM
にtimaにより編集されたメッセージ

All Answers

timatima

actionSupportタグとコントローラを使用して似たことができるように思います。

下記の記事が参考になるかと思います。

 

Dependent Multilevel Selectlists

 

 

記事の中でのポイントのみ抜粋します。

 

 Visualforce Page(抜粋)

 

<apex:selectList value="{!selectedLevel1}" id="cbxlevel1" size="1" required="true">
<apex:selectOptions value="{!level1items}"/>
<apex:actionSupport event="onchange" rerender="cbxlevel2"/>
</apex:selectList>

<apex:selectList value="{!selectedLevel2}" id="cbxlevel2" size="1">
<apex:selectOptions value="{!level2items}"/>
<apex:actionSupport event="onchange" rerender="cbxlevel3"/>
</apex:selectList>

 

 

 Controller

 

public List<selectOption> level2Items {
get {
List<selectOption> options = new List<selectOption>();

if (selectedLevel1 != NULL) {
options.add(new SelectOption('','-- Choose a Category --'));
for (Cat2__c cat : [select Id, Name from Cat2__c Where Cat1__c = :selectedLevel1 Order By Name])
options.add(new SelectOption(cat.Id,cat.Name));
}

return options;
}
set;
}

 

 

 

一つ目のselectListがonchangeされたタイミングで、連動させたい二番目のselectListの中身を生成しています。

01-25-2010 04:43 PM
にtimaにより編集されたメッセージ
This was selected as the best answer
TylorTylor

なるほど、Visualforce Page だけではなく、Apex Codeを使用する方法しかないのですね・・・

 

了解しました! :manvery-happy:

 

ありがとうございます。