Power Apps の IN 演算子による委任の警告を StartsWith() で解消する
前提
投稿の一覧を表示するギャラリー gryPosts と、投稿の題名で検索をかけるためのテキストボックス txtSearchByTitle があると考える。投稿を保持するデータソースとして posts がある。posts は title 列と content 列を含むものとする。
ここで gryPosts に表示される投稿数は多くなる可能性があるため、gryPosts には txtSearchByTitle に渡された題名が含まれる投稿を抽出する機能をつけたい。
実装
このとき、gryPosts には次のようにプロパティを設定すれば良い。なお、txtSearchByTitle は特段の設定が不要である。
Items = If(
IsBlank(txtSearchByTitle),
posts,
Filter(
posts,
txtSearchByTitle.Value in title
)
)
これで gryPosts に txtSearchByTitle を参照して、指定された題名を含むような投稿のみを返す機能を実装できた。ここで txtSearchByTitle が空欄の場合は投稿全件を返すものである。
委任に関する警告の発出
問題がある。in 演算子は特定のデータソース(SharePoint Online など)で委任不可能(委任の警告が発出される)になる場合がある。今回はドキュメントの上では委任できるようであったが、Power Apps Studio 上では委任不可能のようであった。
このため in 演算子を使わない形にコードを改変することで、委任の警告を回避する。
回避策: in → StartsWith()
in 演算子については、代わりに StartsWith 関数を用いる。定義は StartsWith(A, B) である。
StartsWith 関数はテキスト true である。false である。
ここで内部処理は「テキスト
なお、Filter 関数は委任可能である。
よって、gryPosts を以下のように改変する。
Items = If(
IsBlank(txtSearchByTitle),
posts,
Filter(
posts,
StartsWith(title, txtSearchByTitle.Value)
)
)
これで正常に委任の警告を回避できた。
Discussion