この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

FieldSet クラス

sObject に作成された項目セットの詳細を検出および取得するためのメソッドが含まれます。

名前空間

Schema

使用方法

項目セットに含まれる項目を検出し、項目セット自体の詳細 (名前、名前空間、表示ラベルなど) を取得するには、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");public class MerchandiseDetails {
2
3    public Merchandise__c merch { get; set; }
4    
5    public MerchandiseDetails() {
6        this.merch = getMerchandise();
7    }
8
9    public List<Schema.FieldSetMember> getFields() {
10        return SObjectType.Merchandise__c.FieldSets.Dimensions.getFields();
11    }
12
13    private Merchandise__c getMerchandise() {
14        String query = 'SELECT ';
15        for(Schema.FieldSetMember f : this.getFields()) {
16            query += f.getFieldPath() + ', ';
17        }
18        query += 'Id, Name FROM Merchandise__c LIMIT 1';
19        return Database.query(query);
20    }
21}
上記のコントローラを使用する Visualforce ページは単純です。
1swfobject.registerObject("clippy.codeblock-4", "9");<apex:page controller="MerchandiseDetails">
2    <apex:form >
3
4      <apex:pageBlock title="Product Details">
5          <apex:pageBlockSection title="Product">
6              <apex:inputField value="{!merch.Name}"/>
7          </apex:pageBlockSection>
8      
9          <apex:pageBlockSection title="Dimensions">
10              <apex:repeat value="{!fields}" var="f">
11                  <apex:inputField value="{!merch[f.fieldPath]}" 
12                      required="{!OR(f.required, f.dbrequired)}"/>
13              </apex:repeat>
14          </apex:pageBlockSection>
15  
16        </apex:pageBlock>
17
18    </apex:form>  
19</apex:page>
上記のマークアップは、フォーム上の項目を必須項目として示す必要があるかどうかを判定するために使用する数式です。項目セット内の項目は、項目セット定義または項目自体の定義によって必須にすることができます。この数式では両方を処理します。

FieldSet メソッド

FieldSet のメソッドは次のとおりです。すべてインスタンスメソッドです。

getDescription()

項目セットの説明を返します。

署名

public String getDescription()

戻り値

型: String

使用方法

説明は項目セットの必須項目で、項目セットのコンテキストとコンテンツを説明するためのものです。多くの場合、エンドユーザではなく、管理パッケージに定義された項目セットを設定するシステム管理者を対象とします。

getFields()

項目セットを構成する項目の Schema.FieldSetMember オブジェクトのリストを返します。

署名

public List<FieldSetMember> getFields()

戻り値

型: List<Schema.FieldSetMember>

getLabel()

Salesforce ユーザインターフェースの項目の隣に表示されるテキストラベルを返します。

署名

public String getLabel()

戻り値

型: String

getName()

項目セットの名前を返します。

署名

public String getName()

戻り値

型: String

getNamespace()

項目セットの名前空間を返します。

署名

public String getNamespace()

戻り値

型: String

使用方法

組織で名前空間を設定しておらず、項目セットが組織で定義されている場合、返される名前空間は空の文字列です。それ以外の場合、これは組織の名前空間か、項目セットが含まれる管理パッケージの名前空間です。

getSObjectType()

項目セット定義が含まれる sObject の Schema.sObjectType を返します。

署名

public Schema.SObjectType getSObjectType()

戻り値

型: Schema.SObjectType