記事の移動
https://www.powerplatform.work/blog/2019/06/16/PowerApps-ComboBox%E3%81%8C%E9%81%B8%E6%8A%9E%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AB%E3%83%9A%E3%83%BC%E3%82%B8%E9%81%B7%E7%A7%BB%E3%82%92%E3%81%95%E3%81%9B%E3%81%AA%E3%81%84%E6%96%B9%E6%B3%95/
こちらに移動しました。
こちらに書かれている内容は最新情報でない可能性があります。
概要
コンボボックス(ComboBox)でアイテムが選択されていないときにエラー通知やページ遷移をさせない方法です。
施策
IsBlank関数とCountRows関数の両方を使用する。
どちらか片方だけでも、一見うまくいきそうですがケースに抜けが生じます。
コード
ComboBoxの複数選択は許可しています。
If(
IsBlank(ComboBox1.SelectedItems) || CountRows(ComboBox1.SelectedItems) = 0,
Concurrent(
UpdateContext({IsValidate: true}),
Notify(
"選択されていません",
NotificationType.Error
)
),
UpdateContext({IsValidate: false})
)
Notify()は任意です。
あとはIsValidate をボタン等の遷移するためのコントロールに設定してやります。
If(
IsValidate,
Notify(
"エラーが出ている個所を訂正してください。",
NotificationType.Error
),
Navigate(
Screen2,
ScreenTransition.Fade
)
)
なぜIsBlank()が必要?
コンボボックスControlはユーザーがコンボボックスを選択する前はDefaultselectedItems プロパティを使用して選択した項目を初期化しています。
ただし、コンボボックスコントロールのSelectedプロパティとSelectedItemsプロパティはユーザーの操作によって選択されたアイテム一覧を表示するために使用されます。したがって、手動でコンボボックスコントロールから値を選択しないと、Selected式は空を返します。
その為、IsBlank関数が必要となってきます。
なぜCountRows()が必要?
ユーザーがコンボボックスを選択後にアイテムを削除した場合、すでにユーザーが1度手動で値を選択したため、Selected式は空を返さなくなるので必要です。