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

カスタムコンポーネントの動的選択リストの作成

Lightning アプリケーションビルダーでコンポーネントが設定されるときに、コンポーネントのプロパティを選択リストとして公開できます。選択リストの値は、作成する Apex クラスによって提供されます。

たとえば、カスタムお知らせレコードを表示するホームページのコンポーネントを作成するとします。Apex クラスを使用して、Lightning アプリケーションビルダーのコンポーネントプロパティの選択リストにすべてのお知らせレコードのタイトルを表示できます。これで、システム管理者がホームページにコンポーネントを追加するときに、ページに配置する適切なお知らせを簡単に選択できます。

  1. 選択リストのデータソースとして使用するカスタム Apex クラスを作成します。Apex クラスは、VisualEditor.DynamicPickList 抽象クラスを拡張する必要があります。
  2. カスタム Apex クラスをデータソースとして指定するデザインファイルに属性を追加します。

次に、簡単な例を示します。

Apex クラスの作成

1global class MyCustomPickList extends VisualEditor.DynamicPickList{
2    
3    global override VisualEditor.DataRow getDefaultValue(){
4        VisualEditor.DataRow defaultValue = new VisualEditor.DataRow('red', 'RED');
5        return defaultValue;
6    }
7    global override VisualEditor.DynamicPickListRows getValues() {
8        VisualEditor.DataRow value1 = new VisualEditor.DataRow('red', 'RED');
9        VisualEditor.DataRow value2 = new VisualEditor.DataRow('yellow', 'YELLOW');
10        VisualEditor.DynamicPickListRows  myValues = new VisualEditor.DynamicPickListRows();
11        myValues.addRow(value1);
12        myValues.addRow(value2);
13        return myValues;
14    }
15}

VisualEditor.DataRow では、任意のオブジェクトをその値として指定できますが、文字列属性にはデータソースのみを指定できます。isValid()getLabel() のデフォルトの実装では、パラメータで渡されるオブジェクトが比較のための文字列であることを前提としています。

メモ

VisualEditor.DynamicPickList 抽象クラスについての詳細は、『Apex 開発者ガイド』を参照してください。

デザインファイルへの Apex クラスの追加

既存のコンポーネントのデータソースとして Apex クラスを指定するには、Apex 名前空間と Apex クラス名で構成される値がある属性にデータソースプロパティを追加します。

1<design:component>
2        <design:attribute name="property1" datasource="apex://MyCustomPickList"/>
3</design:component>

動的選択リストの考慮事項

  • Apex データソースを public として指定しても、管理パッケージでは考慮されません。Apex クラスが public で、管理パッケージに含まれている場合、登録者組織のカスタムコンポーネントのデータソースとして使用できます。
  • Apex クラスがデータソースとして使用されている場合、Apex クラスのプロファイルアクセスは考慮されません。システム管理者のプロファイルに Apex クラスへのアクセス権はないが、カスタムコンポーネントへのアクセス権がある場合、システム管理者の Lightning アプリケーションビルダーには、コンポーネントの Apex クラスによって提供される値が表示されます。