技術情報ブログ
Power Platform
2022.05.25

Power Apps:動的リストの実装方法

Power Apps:動的リストの実装方法

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

今回はPower Apps キャンバスアプリ上で動的リストを実装する方法について紹介します。
機能は以下動画をご覧ください。

使用する場面も多い機能だと思いますので、実装方法の1つとして参考にしてください。

内容としては、Power Appsでアプリを作成している方に向けた記事です。

 

準備

今回はコレクション(colProduct)を用いて実装します。

コレクションの型は以下の通りです。

No(数値):各レコードのNo
製品名(文字列):製品名
コレクション(colProduct)
コレクション(colProduct)

また、下記画像を参考にしてPower Apps キャンバスアプリ上で各パーツを追加してください。

パーツ
パーツ

ポイントのパーツは以下です。

  • テキスト入力:製品名を入力します

  • アイコン():レコードを追加します

  • アイコン(ゴミ箱):対象レコードを削除します

それでは、動的リストを実装していきましょう。
以下機能の実装方法について説明します。

 

レコードの追加機能

アイコン(の実装方法です。

製品名を入力し、アイコン(を押下すると、レコードがコレクションに追加されるようにします。

レコードを追加する際には、先頭もしくは末尾に追加する方法があります。
それぞれについて説明します。

 

レコードの先頭に追加

アイコン(のOnSelectプロパティに以下を記載します。
※txtProductは製品名を入力している「テキスト入力」パーツです。

// コレクションの先頭にレコードを追加
UpdateIf(colProduct, true, { No: No+1 });              // 各レコードのNoを+1
Collect(colProduct,{ No: 1, 製品名: txtProduct.Text}); // No.1のレコードを追加
コレクションの先頭にレコードを追加
コレクションの先頭にレコードを追加

ポイントとしては、UpdateIf(colProduct, true, { No: No+1 })の部分です。

UpdateIf 関数を用いて、各レコードのNoを+1しています。
その後、Noを1に設定したレコードを追加しています。

UpdateIf 関数については、以下を参照してください。
Power Apps の Update および UpdateIf 関数

 

レコードの末尾に追加

アイコン(のOnSelectプロパティに以下を記載します。
※txtProductは製品名を入力している「テキスト入力」パーツです。

// コレクションの末尾にレコードを追加
Collect(colProduct,{ No: Max(colProduct,No) + 1, 製品名: txtProduct.Text}); // Noの最大値+1のレコードを追加
コレクションの末尾にレコードを追加
コレクションの末尾にレコードを追加

ポイントとしてはMax(colProduct,No) + 1の部分です。

Max 関数を用いて、コレクションのNoに関する最大値を取得します。
その後、最大値 + 1のNoを設定したレコードを追加します。

Max 関数については、以下を参照してください。
Power Apps の Average、Max、Min、StdevP、Sum、および VarP 関数

 

レコードの削除機能

アイコン(ゴミ箱)の実装方法です。

アイコン(を押下すると、レコードがコレクションから削除されるようにします。
アイコン(のOnSelectプロパティに以下を記載します。

With( { thisNo : ThisItem.No },                     // 対象レコードのNoを取得
    RemoveIf(colProduct, No = thisNo);              // 対象レコードを削除
    UpdateIf(colProduct, No > thisNo, {No : No-1}); // 対象レコード以降のNoを-1
)
コレクションからレコードを削除
コレクションからレコードを削除

With 関数を用いて実装している部分がポイントです。

With 関数については、以下を参照してください。
Power Apps での With 関数

RemoveIf 関数でThisItemのレコードが削除されると、Power AppsではThisItemが示すレコードが自動的に更新されます。
よって、RemoveIf 関数の後にThisItemを用いる場合は、想定している値とは異なることがあるので、注意が必要です。

今回は、With 関数を用いることで、RemoveIf 関数実行前のThisItem.Noの値を変数に格納しています。
これにより、RemoveIf 関数の後でも、想定している値を用いることができます。

 

さいごに

本記事では、Power Apps キャンバスアプリにて動的リストを実装する方法についてご紹介しました。

使用する場面も多い機能だと思いますので、ぜひご一読ください!

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

🖊小刀稱知哉さんのブログ一覧はこちら

大分県出身(温泉大好き)、現在は茨城県在住

1990年生まれ

30才でメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書(最近書道を始めました)

主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!

(最近はCopilot Studioについても勉強中)

Microsoft MVPを受賞させていただきました!

持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200/SC-100

Microsoftクラウド関連

シェアする
記事カテゴリ
最新記事
2025.10.15

SharePoint×Power Automate:承認フローの作り方完全ガイド(第1回:事前設定編)

2025.10.01

Copilot Studio活用アイデア(1):Microsoft Learn Docs MCP サーバーと連携したFAQエージェント

2025.09.17

Power Appsモデル駆動型アプリ×SharePoint統合:エンティティに基づくとは?

2025.09.03

SharePointサイトを効率展開!テンプレート化3つの方法を比較してみた

2025.08.27

SharePointで社内ポータルを作りたいと思ったときに読むブログ(後編)

セキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタAccessCSSBreakpointObserverリマインドコレクション送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPIInfoPathxUnitメディアクエリSet複数の添付ファイルメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバーMatTable.Net Core 3.1スマホForAll承認フロー差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントAngular MaterialVSCodePCUpdateContextformインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットデータ構造.Net Core Test Explorerレスポンシブロードマップエクスポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用モデル駆動型アプリSortByColumns関数Dataverse for Teams入門技術インポート委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性Power AppsTypeScriptitem関数初心者ItカスタマイズVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進Power PlatformHTMLGoogle Maps中級者DXcomponentエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方SharePointEF CoreMarker Clustererキャンバスアプリ情報技術ダイアログエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認ExcelマイグレーションRANK()関数DatePickerメッセージIDコンポーネントerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理Power AutomateFramework CoreDynamics 365 SalesDropdownメールdialog復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理C#Attribute directivesMicrosoft Translatorviewfirst()関数Tipsrestoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムattributeO/Rマッパーマーカークラスタリングライブラリビューnest新機能Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化validationazure sql databasetailwindcssアクセス制限入れ子変数個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定ローコードCase式マルチテナントノーコード動的リスト検索ユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn DocsAngularHTTP Requestドロップダウンメニュー承認collectionMicrosoft 365グループ
PageTop
ページトップに戻る