14.创建过滤按钮

刚打开应用的时候,所有的申请都显示。在菜单页里面添加一个按钮,然后点击了以后只显示【已完成】的申请,就是提供过滤的功能。

  1. 添加按钮,名字叫【已完成】
    pw11-1

  2. 设定按钮的OnSelect 公式
    ========================================
    Set(var_filterStatus,”已完成”);Navigate(BrowseScreen1,None);
    ========================================

    pw11-2

  3. 使BrowseGallery 只显示状态等于 var_filterStatus 的项,此部分先为了了解确认下当前的显示条件,在BrowseGallery 的Items属性
    pw11-3

  4. 默认是这样
    ====================
    SortByColumns(
        Filter(
            [@采购申请书],
            StartsWith(
                标题,
                TextSearchBox1.Text
            )
        ),
        “Title”,
        If(
            SortDescending1,
            Descending,
            Ascending
        )
    )
    =====================

  5. 里面的Filter, 默认是这样
    =====================
    StartsWith(
                标题,
                TextSearchBox1.Text
            )
    =====================
    这个意思是,使用在默认有的搜索框里输入的值,然后表头从此值开始的项显示。
    现在保留此显示条件,再追加状态为var_filterStatus 的项,就变成这样。
    =============================
    Filter(
            [@采购申请书],
            StartsWith(
                标题,
                TextSearchBox1.Text
            ),
            If(
                !IsBlank(var_filterStatus),
                状态 = var_filterStatus,
                true
            )
        )
    ==============================
    意思是,如果 var_filterStatus 不是没有值(刚刚打开应用的时候没有值)的时候,只显示状态字段的值为var_filterStatus,否则true(=不适应条件:就是显示所有的状态)

  6. 改好的公式如下
    pw11-4
  7. 现在,新加的部分又蓝色的下划线,又提示【委派警告。此公式的“Filter”部分可能在大型数据集上无法正常工作】,暂时忽略此警告,将来我们再改善。

  8. 现在,点击一次按钮后显示已完成的项,但没法再显示全部,所以再添加显示全部的按钮。
    此按钮的公式如下
    ====================
    Set(var_filterStatus,Blank())
    ====================
    意思为 var_filterStatus 的值删掉,返回没有值的状态,(在PowerApps上相当null 是 Blank()来实现)
    pw11-5

就完成了,为测试先BrowseScreen 后点击播放,打开菜单页后点击【已完成】就只显示已完成的项了
pw11-6