次の方法で共有


Power Apps component framework に関するよくある質問 (FAQ)

この記事は、Power Apps component framework についてのよくある質問に関する情報を提供します。

コード コンポーネントの良い例はどこにありますか?

さまざまなコンポーネント機能と API の使用法を紹介する 基本的なコンポーネント 一式を公開ました。 Power Apps コミュニティ フォーラム には、コミュニティからの素晴らしい例がたくさんあります。

コレクションなどのコード コンポーネントでリッチ データ型を使用する方法は?

この機能は現在、サポートされていません。 ただし、キャンバス アプリには JSON 関数 があり、アプリ メーカーはデータを文字列化することができます。

  1. コレクションを JSON 関数に渡します。
  2. JSON 関数から返されるコレクション データの文字列表現を、コンポーネントの文字列プロパティの 1 つに渡します。
  3. コンポーネント コードの JSON.parse を使用して、JavaScript オブジェクト に変換します。

別のコンポーネント内から他のコンポーネントを呼び出すことはできますか?

これは現在のところ対応していません。

フォント リソースをバンドルできますか?

現在、フォント リソース (.ttf ファイル拡張子を持つファイル) は、フレームワークでサポートされていません。

キャンバス アプリで img リソース プロパティを使用できますか。

現在、img リソースはキャンバス アプリでサポートされていません。

キャンバス アプリでのコンポーネントの TabIndex サポート

現在、コード コンポーネントはキャンバス アプリの tabindex プロパティをサポートしていません。 モデル駆動型アプリの場合、タブ割り当ては tabIndex = 0 を使用して自動的に割り当てられるため、要素は出現順にナビゲートされます。

コマンドバーを追加したり、サブグリッドを検索したりできますか

コマンドバーを追加するには、モデル駆動型アプリのサブグリッドを検索し、cds-data-set-options を指定する必要があります。

モデル駆動型アプリのイベントハンドラーと同じようにフォーム コンテキストにアクセスできますか?

コントロールでフォーム コンテキストに直接アクセスすることはサポートされていません。 コード コンポーネントは、モデル駆動型アプリ、キャンバス アプリ、ダッシュボードなどのさまざまな製品で機能することが期待されているため、フォーム コンテキストに依存することはできません。 回避策は、コード コンポーネントを列にバインドし、OnChange イベントハンドラーをその列へ追加します。 コード コンポーネントは列の値を更新でき、OnChange イベント ハンドラーはフォーム コンテキストにアクセスできます。 テーブルにバインドされていない列を使用するか、submitModenever に設定されているテーブルにバインドされている列を使用できます。 将来的には、列構成を追加せずにコントロールの外部で変更を伝達するために使用できるカスタムイベントのサポートを追加する予定です。

インポートされたコード コンポーネントからプロパティを追加/削除することはできません

オプションのプロパティは新しいコンポーネント バージョンで追加できますが、既存のプロパティを削除することはできません。 回避策として、プロパティをオプションにして非表示にすることができます。 さらに、コード コンポーネントは新しいバージョンで必要なプロパティを追加できないため、新しい名前でコード コンポーネントを作成し、ターゲット システムで再構成する必要があります。

コンポーネントからウィンドウ オブジェクトにアクセスできますか。

現在、コントロールから ウィンドウ オブジェクト へのアクセスはサポートされていません。

レコード ID またはテーブル名にアクセスするにはどうすればよいですか?

Power Apps コンポーネントを作成する開発者は、Context にコントロールが存在するデータ コンテキストに関する情報が含まれていることを期待する場合があります。 クライアント側のスクリプトは、クライアント側スクリプト開発者がレコード ID とテーブル タイプにアクセスするために使用できる getIdgetEntityName などのメソッドを提供する formContext.data.entity オブジェクトからアクセスを提供します。

Power Apps コンポーネントは、この情報が利用できない可能性がある複数のサーフェスでサポートされる必要があるため、これを提供しません。

これらのプロパティが利用可能なフォームでアクセスできるようにするには、コントロールの構成時にオプションとして追加する必要があります。

そのためには、ControlManifest.Input.xmlプロパティ要素 を追加する必要があります。 of-type 属性値は SingleLine.Textusageinput である必要があります。

たとえば、コントロール内に次のプロパティを追加します:

<property name="entityId"
  display-name-key="Entity Id"
  description-key="The id of the current record."
  of-type="SingleLine.Text"
  usage="input"
  required="true" />
<property name="entityName"
  display-name-key="Entity Name"
  description-key="The logical name of the type of the current record."
  of-type="SingleLine.Text"
  usage="input"
  required="true" />

これらのプロパティを定義すると、それぞれ context.parameters.entityIdcontext.parameters.entityName を使用して値にアクセスできます。

モデル駆動型アプリのフォームにコントロールを登録する場合、Entity Id プロパティをレコードの一意識別子を表す列にバインドする必要があります。 この場合、アカウント テーブルaccountid

Entity Id プロパティを accountid フィールドに構成する

エンティティ名 プロパティの場合、値を entitylogicalname フィールドにバインドするか、account のような静的な値にバインドできます。

Entity Name プロパティを accountid フィールドに構成する