拆解PowerApps - 请假申请 - 8

拆解PowerApps - 请假申请 - 8

接上一节,在选择好日期并点击下一步按钮后,就会跳转到下面这个SelectApproverScreen界面,进行审批人的选择。

  1. 页面的总体布局如下图所示
    页面总体结构
    可以看到,这个页面和上一节选择日期的页面很相似,都是由独立的控件组成,并且文本标签控件居多,感觉运行逻辑应该会比较简单,下面就一起来解析一下。

2. 控件解析
习惯性的看了一下Screen层面的设置,没发现有什么特别的设置,接下来就直接逐个分析17个子控件。
2.1 iconBackApproverScreen - 左上角的返回按钮
OnSelect = Back() //作为按钮来说,这个OnSelect通常是必设项。这里使用了最纯粹的返回。

2.2 LblHeaderAproverScreen - 页面的标题
Text = “Submit To” //也是最直接的设置

2.3 ImageLeaveTypeApproverScreen - 假期类型的图标
Image = If(_editingRequest, LookUp(LeaveTypeCollection, type = First(RequestEdit).LeaveType).icon, _selectedLeaveType.icon) //如果处于编辑页面,就从LeaveTypeCollection里查询相应的假期类型图标,否则就设置为所选假期类型的图标_SelectedLeaveType.icon

2.4 LblLeaveTypeApproverScreen - 假期类型的文字表示
Text = If(_editingRequest, First(RequestEdit).LeaveType, _selectedLeaveType.type)

2.5 LblCurrBalTextApproverScreen - 固定的文字标签
Text = "Current balance: "

2.6 ** LblCurrBalValApproverScreen** - 当前可用的假期天数
Text = LabelCurrentBalanceVal.Text //这里是本App用到的另一中在不同页面间传递数据的方式,通过控件的属性传递数据。这里用到的 LabelCurrentBallanceVal 是上一节选择日期页面里的一个文字标签,当时这个标签通过LookUp函数获取到了用户的可用假期天数。

2.7 ** LblNewBalTextApproverScreen** - 固定的文字标签
Text = “New balance:”

2.8 ** LblNewBalValApproverScreen** - 去掉此次申请的天数后剩余的可用天数
Text = LookUp(RequesterBalanceCollection, Upper(type)=Upper(_selectedLeaveType.type), balance)- _requestedDays & " days" //原有可用假期天数减去这次申请的天数

2.9 ** Rectangle9_6** - 页面的区域分割线

2.10 LblSubmitTo - 固定的文字标签
Text = “Submit request to”

2.11 ImageManagerProfile - 审批人头像
Image = _defaultApproverPhoto

2.12 LabelManagerName - 审批人姓名
Text = _defaultApprover.DisplayName

2.13 ButtonChangeManager - 更改审批人按钮
默认的,系统会自动获取申请人的直接主管作为审批人,如要更改审批人,可用点击这个按钮来更改。
设置了按钮的OnSelect 属性,点击后执行两个动作,跳转到SelectApproverPopup界面,同时把TextInputSearchFilter文本框初始化掉。

  • OnSelect = Navigate(SelectApproverPopup, None);
  • Reset(TextInputSearchFilter)

2.14 LabelManagerTitle - 审批人职位
Text = _defaultApprover.JobTitle

2.15/ 2.16 Rectangle9_12 / Ractangle9_7 - 页面的区域分割线

2.17 ButonNextApproverScreen - 底部的下一步按钮
Text = If(_editingRequest || _reviewRequest, “Save”, “Next”) //按钮可能会处于不同状态的页面里,如果是编辑或者查看页面,就用Save做按钮名,否则就用 Next。
OnSelect = If(_editingRequest, Navigate(EditRequestScreen, None), _reviewRequest, Back(), Navigate(LeaveDetailsScreen, None)) //根据页面的不同状态,跳转到不同的页面

本节解析到此结束,汇总一下其中用到的函数:
IFReset, Navigate, LookUp, Upper, BackFirst,都是之前已经涉及到的。
我们下一节再见。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值