3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【SalesForce】検索画面

Last updated at Posted at 2017-06-13

こんにちは。
わたちゃんと申します。

今日はですね、検索画面の基本的な作り方を記述していきます。
最近はAndroidばっかで健忘症になっていましてね、ここに書いておいてまた見直そうって思ってます。

ではまず基本のVF"SM_WataSearch_Page"を作っていきますよ。

<apex:page controller="SM_WataSearch_Ctrl" sidebar="false" action="{!init}">
    <style type="text/css">
    </style>
    <script type="text/javascript">
    </script>

    <!-- レコード表示行数 -->
    <apex:variable var="rowNum" value="1" />

    <!-- メインページ -->
    <apex:outputpanel >
        <apex:form id="form1">
        <!-- タイトル -->
        <apex:sectionHeader title="検索画面"/>
            <apex:pageBlock >
            <apex:pageMessages id="messagearea" showDetail="false"/>
            <div style="text-align:right;">
                <!-- 閉じるボタン -->
                <apex:commandbutton value="閉じる" style="width:100px; height:30px;"/>
            </div>
                <!-- 検索条件セクション -->
                <apex:pageblockSection id="searchConditionSection" title="検索条件" columns="2" collapsible="true">

                    <apex:pageBlockSectionItem >
                        <apex:outputText value="条件1" />
                        <apex:outputText value="{!conditions1}" />
                    </apex:pageBlockSectionItem>

                    <apex:pageBlockSectionItem >
                        <apex:outputText value="条件2" />
                        <apex:outputText value="{!conditions2}" />
                    </apex:pageBlockSectionItem>

                </apex:pageblockSection>

                <!-- 検索ボタン -->
                <div style="text-align:center;">
                    <apex:commandButton id="searchButton" style="width:100px; height:30px;" action="{!searchAction}" value="検索" rendered="{!}"/>
                </div>

                <!-- 検索結果セクション -->
                <apex:pageblockSection id="searchResultSection" title="検索結果" columns="1" collapsible="true">
                    <apex:pageblockTable id="resultTable" width="100%" value="{!resultDataList}" var="result" frame="box" >

                        <!-- No -->
                        <apex:column headerValue="No" width="3%">
                            <apex:outputText value="{!rowNum}" />
                            <apex:variable var="rowNum" value="{!VALUE(rowNum) + 1}" />
                        </apex:column>

                        <!-- 結果1 -->
                        <apex:column headerValue="結果1">
                            <apex:outputField value="{!result.columns1}"/>
                        </apex:column>

                        <!-- 結果2 -->
                        <apex:column headerValue="結果2">
                            <apex:outputField value="{!result.columns2}"/>
                        </apex:column>

                        <!-- 結果3 -->
                        <apex:column headerValue="結果3">
                            <apex:outputField value="{!result.columns3}"/>
                        </apex:column>

                        <!-- 結果4 -->
                        <apex:column headerValue="結果4">
                            <apex:outputField value="{!result.columns4}"/>
                        </apex:column>

                    </apex:pageblockTable>
                    <table style="margin-left: auto; margin-right: auto;">
                        <tr>
                            <!-- ページング -->
                            <apex:panelGrid columns="5" id="pagingBlock">
                                <apex:commandLink value="[最初のページ]" rendered="{!pageManager.HasPrevious}" action="{!pageManager.first}" />
                                <apex:commandLink value="[前のページ]" rendered="{!pageManager.HasPrevious}" action="{!pageManager.previous}" />
                                <apex:outputtext value="{!pageManager.pageNumber} / {!totalpage}"/>
                                <apex:commandLink value="[次のページ]" rendered="{!pageManager.HasNext}" action="{!pageManager.next}" />
                                <apex:commandLink value="[最後のページ]" rendered="{!pageManager.HasNext}" action="{!pageManager.last}" />
                            </apex:panelGrid>
                        </tr>
                    </table>
                </apex:pageblockSection>
            </apex:pageBlock>
        </apex:form>
    </apex:outputpanel>
</apex:page>

これが対となる"SM_WataSearch_Ctrl"クラスです。

public with sharing class SM_WataSearch_Ctrl{
    // 検索条件1
    public String targetConditions1 {get; set;}
    // 検索条件2
    public String targetConditions2 {get; set;}
    // 検索結果
    public List<WataChans__c> resultList {get; set;}
    // 改ページ用PageManagerクラス
    public ApexPages.StandardSetController pageManager {get; set;}
    // 総ページ数
    public Integer totalpage {get; set;}

    // 最大表示件数
    private static final Integer PAGING_MAX_ROWS = 10;

    // コンストラクタ
    public SM_WataSearch_Ctrl(){}

    // 初期処理
    public PageReference init(){

        // 値の初期化
        this.targetConditions1 = '';
        this.targetConditions2 = '';
        this.totalpage = null;

        return null;
    }

    // 検索ボタン押下時処理
    public PageReference searchAction() {

        // 検索結果を取得
        this.resultList = searchWatachans(this.targetConditions1, this.targetConditions2);

        // pageManagerに検索結果をセット
        this.pageManager = new ApexPages.StandardSetController(this.resultList);

        // 1ページの最大表示件数をセット
        this.pageManager.setPageSize(PAGING_MAX_ROWS);

        // ページ数取得
        this.totalpage = getTotalPages(this.pageManager);

        // 現在のページ番号セット(件数が存在しない場合、1/0とかいう表示になっちゃうからその対応)
        if (this.totalpage == 0) {
            this.pageNumber = 0;

        } else {
            this.pageNumber = this.pageManager.getPageNumber();

        }

    }

    // 対象レコードを検索
    private List<WataChans__c> searchWatachans(String conditions1, String conditions2){

        // SOQL文を作成
        String createQuery = [SELECT columns1,columns2,columns3,columns4 FROM WataChans__c WHERE ];

        // クエリ発行
        List<WataChans__c> searchResultList = Database.query(createQuery);

        // 結果を返す
        return searchResultList;

    }

    // 総ページ数を取得
    private Integer getTotalPages(ApexPages.StandardSetController pageManager){

        Decimal pages = Decimal.valueOf(pageManager.getResultSize()) / Decimal.valueOf(pageManager.getPageSize());
        return Integer.valueOf(pages.round(System.RoundingMode.CEILING));

    }

}

以上です。

3
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?