今回は選択したビューの値を取得する方法と、それを使って遊んでみようと思います。
1.ビュー表示時のIDがコントロールのID名に繋がる
ビュー画面はオブジェクトホーム画面で、[GO]ボタンを押した時に指定されているビューのIDで各コントロールIDが決まります。
2.ビュー選択リストが保持しているIDを取得する
コントロールのIDが決まっているということは、Javascriptでコントロールを指定して値が取れるはずです。
そこで、URLのパラメータを基に現在選択しているビューのIDを取得します。
取得の方法は「カスタムボタンまたはカスタムリンクの編集」でJavascriptを実行するリストボタンを作成し、そのコードの中で取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 選択リストのビューIDを取得 if (1 < document.location.search.length) { var result = ""; var query = document.location.search.substring(1); // URLのパラメータ文字列を取得(1文字目の[?]は除く) var parameters = query.split('&'); // 配列に分割 for (var i = 0; i < parameters.length; i++) { var element = parameters[i].split('='); // パラメータを名と値に分割 var paramName = decodeURIComponent(element[0]); if (paramName == 'fcf') { // パラメータ名が[fcf]の値を取得(View画面表示時のViewID) result = decodeURIComponent(element[1]); // 上記ViewIDを基に、現在選択しているViewのIDを取得する result = document.getElementById(result + '_listSelect').value // 選択リストビューコントロールの値 } } } // ViewIDをパラメータに別ウィンドウを表示 window.open('/apex/ViewNG?id=' + result, '_blank','width=200,height=200'); |
上記の例は、取得したビューのIDをパラメータに別ウインドウを開くスクリプトです。
3.後は、自分の好きなように利用しよう
今回は取得したIDのビュー名を表示する簡単なものを作ってみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// class public with sharing class clsViewTest { public String pViewName {get;set;} // コンストラクタ public clsViewTest() { String pId; // パラメータ取得 Map<String, String> params = ApexPages.currentPage().getParameters(); if(params.get('id') != null) { pId = params.get('id'); } // ビューのID // 取引先(Account)のオブジェクト情報を取得 ApexPages.StandardSetController objCon = new ApexPages.StandardSetController(database.query('select id from Account limit 1')); // パラメータのID(選択したビューのID)を検索 for(System.SelectOption rec:objCon.getListViewOptions()){ if(rec.getValue().contains(pId)) { pViewName = rec.getLabel(); // ビュー名を取得 break; } } } } ------------------------------------------------------------------------------- // Visualforce <apex:page controller="clsViewTest" sidebar="false" showHeader="false"> <div style="font-size:20px;text-align:center;padding-top:50px;"> 選択したビューは<apex:outputText value="{!pViewName}" />です。 </div> </apex:page> |
ビュー画面のボタンを押下すると、以下のようなウインドウが開きます。
以上です。
選択したビューによって、レイアウトの違う帳票を出力したり、特定のビューではボタンを無効にしたりと、使いようによって便利な機能になるかもしれません。