IdeaStandardSetController クラス
IdeaStandardSetController オブジェクトは、StandardSetController で提供される機能のほか、アイデア固有の機能を提供します。
名前空間
ApexPages
使用方法
上記のメソッドのほか、IdeaStandardSetController クラスは StandardSetController に関連付けられたメソッドを継承します。
インスタンス化
IdeaStandardSetController オブジェクトはインスタンス化できません。アイデアの標準リストコントローラを使用する場合は、カスタム拡張コントローラのコンストラクタを介してインスタンスを取得できます。
例: プロファイルページの表示
次の例では、IdeaStandardSetController オブジェクトのカスタムリストコントローラのコンストラクタでの使用方法を示します。
1public class MyIdeaProfileExtension {
2 private final ApexPages.IdeaStandardSetController ideaSetController;
3
4 public MyIdeaProfileExtension(ApexPages.IdeaStandardSetController controller) {
5 ideaSetController = (ApexPages.IdeaStandardSetController)controller;
6 }
7
8 public List<Idea> getModifiedIdeas() {
9 Idea[] ideas = ideaSetController.getIdeaList();
10 // modify ideas here
11 return ideas;
12 }
13
14}次の Visualforce マークアップは、上記の IdeaStandardSetController の例と <ideas:profileListOutputLink> コンポーネントによって、最新の回答、登録されたアイデア、ユーザに関連する投票の一覧を表示するプロファイルページがどのように表示されるかを示します。この例では特定のユーザ ID を識別しないため、ページには現在ログインしているユーザのプロファイルページが自動的に表示されます。この例が機能するためには、ページ名を profilePage にする必要があります。
1<!-- page named profilePage -->
2<apex:page standardController="Idea" extensions="MyIdeaProfileExtension" recordSetVar="ideaSetVar">
3 <apex:pageBlock >
4 <ideas:profileListOutputLink sort="recentReplies" page="profilePage">
5 Recent Replies</ideas:profileListOutputLink>
6 |
7 <ideas:profileListOutputLink sort="ideas" page="profilePage">Ideas Submitted
8 </ideas:profileListOutputLink>
9 |
10 <ideas:profileListOutputLink sort="votes" page="profilePage">Ideas Voted
11 </ideas:profileListOutputLink>
12 </apex:pageBlock>
13 <apex:pageBlock >
14 <apex:dataList value="{!modifiedIdeas}" var="ideadata">
15 <ideas:detailoutputlink ideaId="{!ideadata.id}" page="viewPage">
16 {!ideadata.title}</ideas:detailoutputlink>
17 </apex:dataList>
18 </apex:pageBlock>
19</apex:page>前の例では、<ideas:detailoutputlink> コンポーネントは、特定のアイデアの詳細ページを表示する次の Visualforce マークアップにリンクします。この例が機能するためには、ページ名を viewPage にする必要があります。
1<!-- page named viewPage -->
2<apex:page standardController="Idea">
3 <apex:pageBlock title="Idea Section">
4 <ideas:detailOutputLink page="viewPage" ideaId="{!idea.id}">{!idea.title}
5 </ideas:detailOutputLink>
6 <br/><br/>
7 <apex:outputText>{!idea.body}</apex:outputText>
8 </apex:pageBlock>
9</apex:page>例: 上位のアイデアとコメント、最近のアイデアとコメント、最も人気のあるアイデアとコメントのリストを表示
次の例では、IdeaStandardSetController オブジェクトのカスタムリストコントローラのコンストラクタでの使用方法を示します。
1public class MyIdeaListExtension {
2 private final ApexPages.IdeaStandardSetController ideaSetController;
3
4 public MyIdeaListExtension (ApexPages.IdeaStandardSetController controller) {
5 ideaSetController = (ApexPages.IdeaStandardSetController)controller;
6 }
7
8 public List<Idea> getModifiedIdeas() {
9 Idea[] ideas = ideaSetController.getIdeaList();
10 // modify ideas here
11 return ideas;
12 }
13}次の Visualforce マークアップは、上記の IdeaStandardSetController 例を <ideas:listOutputLink> コンポーネントと共に使用して、最近、上位、最も人気あるアイデアとコメントをどのように表示するかを示します。この例が機能するためには、ページ名を listPage にする必要があります。
1<!-- page named listPage -->
2<apex:page standardController="Idea" extensions="MyIdeaListExtension" recordSetVar="ideaSetVar">
3 <apex:pageBlock >
4 <ideas:listOutputLink sort="recent" page="listPage">Recent Ideas
5 </ideas:listOutputLink>
6 |
7 <ideas:listOutputLink sort="top" page="listPage">Top Ideas
8 </ideas:listOutputLink>
9 |
10 <ideas:listOutputLink sort="popular" page="listPage">Popular Ideas
11 </ideas:listOutputLink>
12 |
13 <ideas:listOutputLink sort="comments" page="listPage">Recent Comments
14 </ideas:listOutputLink>
15 </apex:pageBlock>
16 <apex:pageBlock >
17 <apex:dataList value="{!modifiedIdeas}" var="ideadata">
18 <ideas:detailoutputlink ideaId="{!ideadata.id}" page="viewPage">
19 {!ideadata.title}</ideas:detailoutputlink>
20 </apex:dataList>
21 </apex:pageBlock>
22</apex:page>前の例では、<ideas:detailoutputlink> コンポーネントは、特定のアイデアの詳細ページを表示する次の Visualforce マークアップにリンクします。このページの名前は viewPage にする必要があります。
1<!-- page named viewPage -->
2<apex:page standardController="Idea">
3 <apex:pageBlock title="Idea Section">
4 <ideas:detailOutputLink page="viewPage" ideaId="{!idea.id}">{!idea.title}
5 </ideas:detailOutputLink>
6 <br/><br/>
7 <apex:outputText>{!idea.body}</apex:outputText>
8 </apex:pageBlock>
9</apex:page>