LoginSignup
4
5

More than 3 years have passed since last update.

【#PowerApps】ComboBoxが選択されていないときにページ遷移をさせない方法

Last updated at Posted at 2019-01-11

記事の移動

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の複数選択は許可しています。

ComboBox1.OnCange
If(
    IsBlank(ComboBox1.SelectedItems) || CountRows(ComboBox1.SelectedItems) = 0,
    Concurrent(
        UpdateContext({IsValidate: true}),
        Notify(
            "選択されていません",
            NotificationType.Error
        )
    ),
    UpdateContext({IsValidate: false})
)

Notify()は任意です。

あとはIsValidate をボタン等の遷移するためのコントロールに設定してやります。

Button1.OnSelected
If(
    IsValidate,
    Notify(
        "エラーが出ている個所を訂正してください。",
        NotificationType.Error
    ),
    Navigate(
        Screen2,
        ScreenTransition.Fade
    )
)

なぜIsBlank()が必要?

コンボボックスControlはユーザーがコンボボックスを選択する前はDefaultselectedItems プロパティを使用して選択した項目を初期化しています。

ただし、コンボボックスコントロールのSelectedプロパティとSelectedItemsプロパティはユーザーの操作によって選択されたアイテム一覧を表示するために使用されます。したがって、手動でコンボボックスコントロールから値を選択しないと、Selected式は空を返します。

その為、IsBlank関数が必要となってきます。

なぜCountRows()が必要?

ユーザーがコンボボックスを選択後にアイテムを削除した場合、すでにユーザーが1度手動で値を選択したため、Selected式は空を返さなくなるので必要です。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5