VisualForceページにて数式で表示コンテンツを表示、非表示

また表示コンテンツ系、とりあえず使用頻度が高いので
このパターンもメモ。

Salesforceの数式IF文使用方法に

IF(logical_test, value_if_true, value_if_false)。logical_test に、評価する式を指定します。value_if_true に、式が真の場合に返す値を指定します。value_if_false に、式が偽の場合に返す値を指定します。

とあるので、その通りに記述すればOK。

今回は、ClassにてSOQLをSELECTして、
取得件数が1件以上あった場合、Trueで表示。
取得件数が0件だった場合、Falseで非表示にしてみます。

Visualforce の apexコントローラに rendered というプロパティがあり、
Boolean値を入れてあげれば、表示・非表示を切り替えられます。


class

public class OutputPanelRender02 {
    
    public List<Account> lstAcc {get; set;}

    public OutputPanelRender02() {
        lstAcc = new List<Account>{};
    }
    
    // 取得件数が1件以上のSELECT
    public pagereference doSearch01() {
        lstAcc = [SELECT ID FROM Account];
        return null;
    }
    
    // 取得件数が0件のSELECT
    public pagereference doSearch02() {
        lstAcc = [SELECT ID FROM Account WHERE Name = 'hogefuga'];
        return null;
    }
    
}

Visualforce

<apex:page controller="OutputPanelRender02">
<apex:form id="form">
    
    <p><h1>数式IFによるコンテンツの切り替え</h1></p>

    <apex:commandbutton value="検索1" 
        action="{!doSearch01}" rerender="form"/>
    <apex:commandbutton value="検索2" 
        action="{!doSearch02}" rerender="form"/>
    
    <apex:outputPanel rendered="{!IF(lstAcc.size>0,true,false)}">
        <table style="border: 1px solid #ccc;">
            <tr><td>ほげほげ</td></tr>
            <tr><td>ふがふが</td></tr>
            <tr><td>ほげほげ</td></tr>
        </table>
    </apex:outputPanel>

</apex:form>
</apex:page>

実行結果

f:id:MNakayama:20160218164211g:plain


実行結果はGIFにするとわかりやすいね
相変わらず似た記事ばっかだけど
日々精進。ほんならね~|ω・`)ノ