总屏幕体构成如下:
首先,在CreateTicketFormScreen页面层面, 设置了OnVisible变量 = Set(NewTicketID,Concatenate("AH", Text(Now(),"[$-en-US]yyyymmddhhmmss")))
/# 利用几个函数组合出一个含当前时间信息的文本用来做工单单号。#/
然后,来看四组控件。
a. 蓝框的标题栏
主要是返回按钮:设置了 OnSelect = ResetForm(EditTicketForm); Back()
b. 绿框的四个Label 控件:
这里的2、4 两个静态标签做名称标识,第一个标也是静态的,因为是新建工单,它的状态是固定的“NOT STARTED”, 因此就设置了 Text = “NOT STARTED”。 第三个标签的Text 则指向了页面层面定义的变量 NewTicketID, Text = NewTicketID。
c. 粉框的创建工单窗体(Form)
首先,之前提到过,对于窗体控件至少需要设置两个最基本的两个属性: 数据源、窗体里要处理的字段。
-
DataSource = HelpDesk。 对本案例来说,也就是SPO里创建的列表。
-
窗体的字段需要在右侧的属性栏里进行选择。
其次,窗体由五组卡片构成: Title、Category、Priority、TaskStatus(由于其Visible属性设置成了关闭, 因此在右侧的页面里看不到)、Description。
我们逐组来看四组可见的卡片, 每组都包含四个子控件,是标准的在从数据源添加好字段后的样子。只是第二个Category 和第三个 Priority控件的默认文本输入框被替代成了下拉列表控件。
对于表单中的每个卡片,主要的设置有:
>> 卡片层面的 Update 和 Default:
-
如果卡片内是文本输入框: Update = 输入框.Text
-
如果卡片内是下拉列表: Update = 下拉列表.Selected
-
Default = ThisItem.<对应的字段名>
>> 卡片里文本输入框的 Default 和 Format:
-
Default = ThisItem.Default 或 Parent.Default
-
Format = Text
/#或者按照文本框要输入的内容的类型,比如数字为Number等#/
>> 卡片里下拉列表的Items:
Items = 列表名
/#由系统自动对应列表里的字段#/,
或者Items = Choices(列表名.字段名)
/#手动指定字段#/
d. 褐色的底部两个按钮
>> Cancel按钮:
OnSelect = ResetForm(CreateTicketForm); Navigate(MyTicketsScreen,None)
>> Create 按钮:
DisplayMode = If(CreateTicketForm.Valid,DisplayMode.Edit, Disabled)
/# 根据创建工单窗体的Valid属性值,来判断按钮是否可用。 关于表单的 Valid 属性,参考
https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/controls/control-form-detail
在本案例里,由于四个可见卡片全部设置为必填项,因此需要四个必填项全部完成填写,Valid才会为true。#/
OnSelect= SubmitForm(CreateTicketForm); ResetForm(CreateTicketForm); Set(RunFlow,true); Navigate(ConfirmSubmitScreen,None)
/#提交窗体后,将窗体Reset,然后把变RunFlow设为 true, 最后跳转到确认提交的页面。另外,这里涉及到一个变量 RunFlow, 有三个地方对这个变量进行了定义
具体用在MyTicktsScreen页面:
下一节
我们继续解析后续的屏幕构成。
未完,待续。。。
接上一节,本节继续解析屏幕组件。四. CreateTicketFormScreen总体构成:首先,在CreateTicketFormScreen页面层面, 设置了OnVisible变量 = Set(NewTicketID,Concatenate("AH", Text(Now(),"[$-en-US]yyyymmddhhmmss"))) /# 利用几个函数组合出一个含当前时间信息的文本用来做工单单号。#/然后,来看四组控件。a. 蓝框的标题栏主要是返回按钮:设置了 OnSel...
接上一节,本节将介绍出借管理的实现。直接进入主题:
出借管理表单的各个字段已经在上一节统一添加到了Excel 文件中,本节的基本思路是通过
一个
列表页面来显示所有设备借用申请,点击某个申请则进入这个申请的具体管理页面。
1. 添加用来显示借用申请列表的页面,关联好数据源,设置好布局。
1.1 插入菜单的新下直接选择列表类型屏幕。
1.2修改一下新屏幕的名字以及其下的TemplateGalleryList1,便于以后的识别。
1.3 和上一节相似的操作,把BorrowGalleryList .
1.物联网设备通过SDK将遥测的温湿度值发送到IoT Hub;
2.使用Azure Func
ti
ons 的IoT Hub触发读取遥测消息,并将遥测消息post到
Power
BI的流数据集中;
3.在
Power
BI中创建dashboard,并将流数据集制作成磁贴;
4.在
Power
App
s中添加
Power
BI 磁贴并保存;
5.在手机版
Power
App
s中查看.
pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作。
Python是如何进行类型转换的?
Python提供了将变量或值从一种类型转换成另一种类型的内置函数。比如int函数能够将符合数学格式数字型字符串转换成整数。否则,返回错误信息。
Python是如何进行内存管理的?
Python引
接上节,本节解析编辑页面Edit
Screen
1。
在第一节里提到过,编辑页面有两个功能,
一个
是用来新建条目,
一个
是对已有的条目进行编辑。因其表现形式完全一致,因此可以通过
一个
页面来实现。
各控件在页面里的对应关系如下图所示(对应Edit
Form
1里的各个子控件,可一节详情页面类似,就不再具体标出,统一的框在红框里)。
页面主要有三个组件
1. 表单 Edit
Form
1: 和上一节的详细信息页面里的表单Detail
Form
1一样,可以在右侧的属性栏里通过点击编辑字段来添加删除字段、调整字段的...
这个页面初看感觉很简单,稍一拆析发现还是有点意思,这个页面里其实是包括了两个“页面”。一起来看:
最初从左侧的树状视图里选中最上层的 Confirma
ti
on
Screen
时,右侧的页面布局展示区域显示的是下图中间那个绿色对勾的页面。结合页面的名字来看,第一感觉这个页面就是简单的实现了对请假申请进行确认的功能。
把这个页面的第一级展开后,看到的是两个组合:ManagerView,Employee
对于我们做项目开发的人来说,这样的效果根本没法跟客户交代!
所以,我们就需要找到替代方式,我这里用了
一个
比较傻的方法,就是点击button以后,触发
一个
弹出层,在弹出层里插入
一个
GIF动图。
首先,创建
一个
组件,分别设置宽和高为
App
.DesignWidth和
App
.DesignHeight如...
五. Edit
Ti
cke
t
Form
Screen
类似View
Ti
cke
t
Screen
, 这里也采用了Scrollable样式的页面布局,并且最终只包含了
一个
卡片。
顶层的页面层面: /#在页面初始化显示的时候,设定了几个变量#/
OnVisible = UpdateContext({ShowAssignedToGallery:false, AssignedToUserDisplayName:"", AssignedToUserMail:"",Edit
Ti
cke
tPriority:Selected
Ti
.