gcss:Spreadsheetコンポーネントの属性のViewIdに固定のビューIDを設定すると、「どこでもView」は特定のビューを固定表示します。
「どこでもView」では動的にビューを変更できるJavaScript APIを公開しています。 ここでは、Visualforceページに埋め込んだ「どこでもView」のビューを選択リストで切り替える方法を例に、ビューを動的に変更する方法を説明します。
ここで説明する内容はオブジェクトモードが前提です。フォルダモードの場合は、フォルダモードへ移行するを参考にソースコードを書き換えてください。
ビューの選択リストで表示するリストビューを切り替えるとき、ページ全体ではなく、リストビューにレンダリングされたデータだけを再読み込みする必要があります。
この動作を実現するには、RaySheetが提供するJavaScript APIのgcbgメンバを使用します。gcbgメンバについてはリファレンスを参照してください。
ここでは、取引先担当者のビューを切り替える選択リストを追加する手順例を紹介します。
ビューを切り替える選択リストに表示するリスト項目を取得するクラスを作成します。
public class ListViewDemo {
public List<SelectOption> getItems() {
List<gcss.Common.ViewItem> viewItemList = gcss.Common.getObjectViewList('contact');
List<SelectOption> options = new List<SelectOption>();
for (gcss.Common.ViewItem viewItem : viewItemList) {
options.add(new SelectOption(viewItem.id, viewItem.name));
}
return options;
}
}
フォルダモードの場合は、getObjectViewListの代わりにgetFolderViewListを使用します。
ビューを切り替える選択リストとRaySheetのビューを表示するためのVisualforceページを作成します。ビューを切り替える選択リストにはJavaScript APIのgcbgメンバを使用し、RaySheetのビューはgcss:Spreadsheetコンポーネントを使用します。
<apex:page controller="ListViewDemo">
<div style="height:500px;width:100%;">
<!-- 選択リストを作成する -->
<apex:form styleClass="slds-m-vertical_medium">
<apex:outputLabel value="リストビュー: " for="gcssViewSelector"/>
<apex:selectList id="gcssViewSelector" onchange="showView(this.value);" size="1">
<apex:selectOptions value="{!items}"/>
</apex:selectList>
</apex:form>
<!-- RaySheetコンポーネントを読み込む -->
<gcss:Spreadsheet object="Contact" />
<!-- RaySheetのJavaScript APIのgcbgインターフェースをコールする -->
<script type="text/javascript">
var showView = function (viewId) {
gcbg.getRaySheet().showView("Contact", viewId);
}
</script>
</div>
</apex:page>
Visualforceページは、既定ではシステム管理者のプロファイルを割り当てられたユーザだけが表示できます。システム管理者以外のプロファイルにも許可するには、Visualforceページのセキュリティを設定します。
作成したVisualforceページのタブを作成して動作を確認します。