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