【Salesforce】Visualforceでチェックボックスを作成する
Visualforceで画面を開発する際に、よく使われるのはチェックボックスですね。
HTMLでチェックボックスを作る場合には、サーバ側へ送信した際にValueへセットされた値が送信されたような気がします。
Visualforceの「apex:inputCheckbox」タグでチェックボックスを作る場合には、少し使い方が違います。
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_inputCheckbox.htm
Apex側でBoolean型の変数を用意します。
この変数はSObjectのチェックボックス項目でもOKです。
public with sharing class ShowCheckBoxController { public Boolean isChecked{get;set;} }
VF側で「apex:inputCheckbox」タグを使用して、valueにApex側の変数を設定します。
「apex:outputLabel」タグを使うことで、チェックボックスのラベルを表示することができます。
<apex:page controller="ShowCheckBoxController" > <apex:form > <apex:inputcheckbox id="check" value="{!isChecked}" /> <apex:outputlabel for="check" value="チェックボックス" /> </apex:form> </apex:page>
このチェックボックスにチェックを入れてApex側へ送信すると、チェックボックスがチェックされたかの真偽値が設定されています。
ちなみに、Apex側で変数にtrueを設定して画面を表示した場合、チェックされた状態でチェックボックスが表示されます。
public with sharing class ShowCheckBoxController { public Boolean isChecked{get;set;} /** * コンストラクタで変数の初期化を行う */ public ShowCheckBoxController(){ this.isChecked =true; } }
複数選択のチェックボックスを表示したい場合もありますね。
そんな場合は「apex:selectCheckboxes」タグを使用します。
「apex:inputCheckbox」とは使い方が違うので注意が必要です。
https://developer.salesforce.com/docs/atlas.ja-jp.208.0.pages.meta/pages/pages_compref_selectCheckboxes.htm
Apex側では選択された値を格納するための、String型のリストを作成します。
また、チェックボックスの項目用に選択リストに使用するSelectOption型のリストも必要です。
このコードでは、getメソッドで作成しています。
public with sharing class ShowCheckBoxController { public List<String> checkedList{get;set;} /** * コンストラクタで変数の初期化を行う */ public ShowCheckBoxController(){ this.checkedList = new List<String>(); } /** * 選択リスト値を作成する */ public List<SelectOption> getCheckList(){ List<SelectOption> selectList; // リストを作成する selectList = new List<SelectOption>(); selectList.add(new SelectOption('AAA', 'AAA')); selectList.add(new SelectOption('BBB', 'BBB')); selectList.add(new SelectOption('CCC', 'CCC')); return selectList; } }
VF側で「apex:selectCheckboxes」タグを使用して、valueにApex側の変数を設定します。
「apex:selectOptions」タグに選択リストを設定することで、チェックボックスの項目値となります。
<apex:page controller="ShowCheckBoxController" > <apex:form > <apex:selectCheckboxes value="{!checkedList}" > <apex:selectOptions value="{!CheckList}" /> </apex:selectCheckboxes> </apex:form> </apex:page>
Apex側に送信した場合、「apex:selectCheckboxes」のvalueに設定した変数にチェックされた値がリスト形式で格納されます。
どちらも簡単に作ることができて便利です。
No comments.