Newer Version Available
FieldSet クラス
名前空間
使用方法
項目セットに含まれる項目を検出し、項目セット自体の詳細 (名前、名前空間、表示ラベルなど) を取得するには、Schema.FieldSet クラスのメソッドを使用します。次の例では、sObject について項目セットの Describe Result オブジェクトのコレクションを取得する方法を示します。返される Map のキーは項目セット名で、値は対応する項目セットの Describe Result です。
1Map<String, Schema.FieldSet> FsMap =
2 Schema.SObjectType.Account.fieldSets.getMap();項目セットは sObject Describe Result からも使用できます。次のコー��行は、前述のサンプルと同じです。
1Schema.DescribeSObjectResult d =
2 Account.sObjectType.getDescribe();
3Map<String, Schema.FieldSet> FsMap =
4 d.fieldSets.getMap();個々の項目セットを使用するには、sObject 上の項目セットのマップ経由でアクセスするか、事前に項目セットの名前がわかる場合は、項目セットへの明示的参照を使用してアクセスします。次の 2 行のコードは、同じ項目セットを取得します。
1Schema.FieldSet fs1 = Schema.SObjectType.Account.fieldSets.getMap().get('field_set_name');
2Schema.FieldSet fs2 = Schema.SObjectType.Account.fieldSets.field_set_name;例: Visualforce ページへの項目セットの表示
このサンプルでは、Schema.FieldSet および Schema.FieldSetMember メソッドを使用して、Merchandise カスタムオブジェクトの Dimensions 項目セットに含まれるすべての項目を動的に取得します。取得した項目のリストを使用して、これらの項目を表示に使用できるようにする SOQL クエリを作成します。Visualforce ページは、MerchandiseDetails クラスをコントローラとして使用します。
1swfobject.registerObject("clippy.codeblock-3", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class MerchandiseDetails {
18
19 public Merchandise__c merch { get; set; }
20
21 public MerchandiseDetails() {
22 this.merch = getMerchandise();
23 }
24
25 public List<Schema.FieldSetMember> getFields() {
26 return SObjectType.Merchandise__c.FieldSets.Dimensions.getFields();
27 }
28
29 private Merchandise__c getMerchandise() {
30 String query = 'SELECT ';
31 for(Schema.FieldSetMember f : this.getFields()) {
32 query += f.getFieldPath() + ', ';
33 }
34 query += 'Id, Name FROM Merchandise__c LIMIT 1';
35 return Database.query(query);
36 }
37}
上記のコントローラを使用する Visualforce ページは単純です。
上記のマークアップは、フォーム上の項目を必須項目として示す必要があるかどうかを判定するために使用する数式です。項目セット内の項目は、項目セット定義または項目自体の定義によって必須にすることができます。この数式では両方を処理します。
1swfobject.registerObject("clippy.codeblock-4", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page controller="MerchandiseDetails">
18 <apex:form >
19
20 <apex:pageBlock title="Product Details">
21 <apex:pageBlockSection title="Product">
22 <apex:inputField value="{!merch.Name}"/>
23 </apex:pageBlockSection>
24
25 <apex:pageBlockSection title="Dimensions">
26 <apex:repeat value="{!fields}" var="f">
27 <apex:inputField value="{!merch[f.fieldPath]}"
28 required="{!OR(f.required, f.dbrequired)}"/>
29 </apex:repeat>
30 </apex:pageBlockSection>
31
32 </apex:pageBlock>
33
34 </apex:form>
35</apex:page>FieldSet メソッド
FieldSet のメソッドは次のとおりです。すべてインスタンスメソッドです。
getDescription()
項目セットの説明を返します。
署名
public String getDescription()
戻り値
型: String
使用方法
説明は項目セットの必須項目で、項目セットのコンテキストとコンテンツを説明するためのものです。多くの場合、エンドユーザではなく、管理パッケージに定義された項目セットを設定するシステム管理者を対象とします。
getFields()
項目セットを構成する項目の Schema.FieldSetMember オブジェクトのリストを返します。
署名
public List<FieldSetMember> getFields()