12.控制按钮的显示条件

因为【完成付款】的按钮,应该财务担当人才能按才对,所以设定完成付款的卡片图部分的显示条件设定。
为定义财务担当人,使用另外准备的Sharepoint 列表,然后打开PowerApps打开时参照此列表来判断当前的人是否财务担当人

  1. 准备列表
    在Sharepoint上创建名字叫AccessControl 的列表,添加名字叫Access的单行栏(选项栏也可以)。列表的权限等按照要求编辑权限只设定管理者等

  2. 标题上输入邮件地址,Access里输入PurchaseRequestAdmin。邮件地址必须全部用小写,为了以后的比对正确。然后,PowerApps开发的时候使用的账号的邮箱地址也要放,否则PowerApps开发时看不到按钮就不方便
    pw9-1
  3. 打开PowerApps
  4. 为了从PowerApps参照SharePoint列表,在PowerApps上的数据源里要添加新做的AccessControl列表
  5. 选择左边的数据源
    pw9-2
  6. 选择Sharepoint
    pw9-3
  7. 在选择连接,虽然显示同样的3个,可能选什么都可以
    pw9-4
  8. 输入或者选择网站,然后选择AccessContro列表
    pw9-5
    pw9-6
  9. 就在数据源里出来AccessControl,以后可以用了
    pw9-7
  10. 然后设定【完全付款】的卡片图显示条件,为了设定,准备var_showAdmin 的变量, 然后PowerApps打开的时候,当前的用户的邮箱地址和AccessControl比对,如果存在项的话就var_showAdmin 设定为true
  11. 点击App
    pw9-8
  12. 确认公式栏里默认选择OnStart
    pw9-9
  13. 公式分两部分,一个是先获取当前的用户的邮件地址,然后把他变成小写,保存到var_userEmail 变量,因为系统提供的邮件地址偶尔大小写混在一起,为AccessControl对比方便先把他变成小写,是在代码里使用邮件地址的通用方法
    ============================
        Set(
            var_userEmail,
            Lower(User().Email)
        );
    ============================
  14. 接下来,列表上尝试获取标题跟此var_userEmail 匹配的项,如果存在想的话,var_showAdmin 设定为true
    首先获取项是这样
    ============================
        LookUp(AccessControl,Title=var_userEmail And Access = “PurchaseRequestAdmin”)
    ============================
  15. 此命令意思为获取满足条件的第一条项,但此LookUp的结果来不能直接判断是否存在,所以获取此Lookup的结果的标题,然后此标题是否Blank 来判断该项是否存在
        ============================
        Set(
            var_showAdmin,
            !IsBlank(LookUp(AccessControl,Title=var_userEmail And Access = PurchaseRequestAdmin”).Title)
        );
        ============================
  16. 所以全体的命令如下
    pw9-10
  17. 然后,上次创建的FinishButton卡片图的显示条件以此 var_showAdmin 来处理
  18. 选择FinishButton 卡片图
    pw9-11

  19. Visible 里输入 var_showAdmin
    偶尔,一输入var_showAdmin 就马上卡图片看不见,这是因为刚才App的OnStart里面写过去var_showAdmin 代码以后,还没启动PowerApps,所以当前开发时的var_showAdmin 是被认为 false, 这样的话,先保存一下,然后PowerApps关掉再启动就会看见。

    pw9-12

    以上,设定结束。用不同的账号来运行测试,如果申请者打开此页面的话看不见完成付款,如果财务担当者打开的时候看得见。