【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇

在上一篇 使用PowerApps快速构建基于主题的轻业务应用 —— 入门篇 中,我用了三个实际的例子演示了如何快速开始使用PowerApps构建轻业务应用,你可能已经发现,我都是使用默认生成的设置,没有做任何修改。当然,那样做出来的应用看起来不那么酷,但已经可以运行了,作为一个起点,已经不错了,不是吗?

但这样自动生成的应用,估计也不能直接用于咱们实际的工作中,为了达到这个目的,你还多多少少需要掌握一些“高级”知识,并且要多一些练习。这一篇将从如下几个方面展开介绍

  1. 布局与控件
  2. 使用数据
  3. 使用网关
  4. 应用生命周期管理

布局与控件

让我们再次回到之前自动生成好的基于Excel文件的订单应用吧。

我们先从左侧开始来剖析一下这个应用。作为一个给最终的业务用户使用的应用,它是怎么构建用户界面的呢?这个应用虽然简单,但其实已经包含了我们常说的“增删改查”的四项基本功能。PowerApps的应用是由一个一个的Screen(屏幕)组成的,一个屏幕通常代表了某一项功能,例如

  1. BrowseScreen,这个一般是用来显示数据列表的,对应的数据操作是“查询列表”。
  2. DetailScreen,这个一般是用来显示某条数据的详细信息的,对应的数据操作是“查询”。
  3. EditScreen,这个屏幕比较有意思,它一般用来新建数据,或者编辑数据,对应的数据操作是“插入”和“更新”。

值得注意的是,以上名称只是推荐的做法,并不强制要求查询的屏幕名称必须叫BrowseScreen,也不要求你必须要上面三个屏幕。事实上,你随时可以添加自己需要的屏幕(Screen)。

顺便要提一下的是,PowerApps的应用天生就是面向移动设备来使用的,所以它默认是有两种布局:手机的布局,和平板电脑的布局。我们此前自动生成应用的时候,是选择“手机的布局(Phone Layout),这个取决于模板的设置。但一旦熟悉之后,我们完全可以自己选择布局,然后开始设计。

你可以从零开始做,也可以从一个模板开始做,但请注意这次选择“Tablet Layout”

回到应用本身,我们刚才说了,PowerApps的应用是由一个一个屏幕组成的,那么屏幕又是由什么组成的呢?控件。

PowerApps的控件,总体来说,分为两大类,一类是容器控件,一类是普通控件。容器控件是可以包含其他控件的控件。主要包括下面两类:

  1. Gallery 控件,这类控件主要用来显示列表数据。
  2. Form 控件,这类控件主要用来显示数据或编辑数据。

相比较而言,普通控件则更多,也更加有意思。总体来说,可以分为下面几个类别,请注意粗体部分,这是PowerApps在移动优先这个目标之下的一些亮点功能。

  1. 文本
    1. 标签(Label)
    2. 文本框(Text Input)
    3. HTML文本框(HTML text),支持用户输入HTML文本,显示富文本内容,例如显示链接 <a href="xxxx">文本</a>
    4. 手写笔输入框(Pen input),支持用户通过手写或者电子笔之前签名,生成的图片可以保存起来。具体参考 https://docs.microsoft.com/en-us/powerapps/controls/control-pen-input
  2. 控件
    1. 按钮(Button)
    2. 下拉框(Drop down)
    3. 组合框(Combo box)
    4. 日期选择器(Date picker)
    5. 列表框(List box)
    6. 复选框(Check box)
    7. 单选框(Radio)
    8. 切换按钮(Toggle)
    9. 滑动框(Slider)
    10. 评分按钮(Rating)
    11. 计时器(Timer)
    12. 导入数据(Import)
    13. 导出数据(Export)
    14. PDF查看器(PDF Viewer)
    15. Power BI 磁贴 (Power BI Tile)
    16. 附件(Attachments)
    17. 数据表控件(Table)
  3. 多媒体空控件
    1. 图片(Image)
    2. 摄像头(Camera),详情请参考 https://docs.microsoft.com/en-us/powerapps/controls/control-camera
    3. 码扫描器(Barcode),可以扫描一维码和二维码,详情请参考 https://docs.microsoft.com/en-us/powerapps/scan-barcode
    4. 视频播放器(Video)
    5. 音频播放器(Audio)
    6. 麦克风(Microphone)
    7. 图片选择器(Add Picture)
  4. 图形控件
    1. 饼图(Pie chart)
    2. 柱状图(Column chart)
    3. 折线图(Line chart)

现在你对于PowerApps所支持的一些图形化界面元素都有了一个基本的了解,接下来就是怎么真正地使用好它们了。你不需要去学一门编程语言,只需要知道这些控件的使用无外乎两个方面

  1. 为控件的属性赋值。一般是选中一个控件后,在右侧会有一个属性面板,列出了所有可以设置的属性。当然,如果你已经比较熟悉的话,则可以在工具栏下面的编辑栏中直接输入属性名和值,快速来完成设置。

  2. 为控件的事件绑定表达式。除了纯粹显示数据的控件,大部分控件都是可以交互式操作的,例如接受用户的点击等。如何为这种行为做出响应呢?在编程中,我们的专业术语叫编写事件处理程序。PowerApps不需要编码,所以它提供了一些特殊的表达式来实现简单的事件处理逻辑。例如下面是一个最常见的按钮事件,当用户点击后,它会从第一个屏幕切换到第二个屏幕。这里用的是navigate函数(另外还有Back,Forward函数来表示后退和前进)。你其实不需要记住这些东西,选择你的控件后,在顶部的Action菜单中,一般会列出来该控件支持的常见的操作。Navigate是一个导航的功能,Collect是一个收集数据的功能(我在下一节会介绍),Remove则是删除数据的操作,跟Collect对应。Flows能够发起一个外部流程,这里先不做展开,后续有专门的文章介绍。

请注意,你可以在事件表达式中定义多个操作,只要用分号将他们分开即可,例如 Collect(TestData,Dropdown1.Selected);Navigate(Screen2, ScreenTransition.Fade)

在这里,我建议大家花个半天的时间,逐一地了解这些控件,理解常见的属性以及事件,只要大致做过一次,我相信对于你日后使用PowerApps将有极大的帮助。

使用数据

接下来要谈一谈数据。大家知道,界面只是一个表象,真正用户在交互的其实是数据。我在 入门篇 中已经介绍了Excel文件,SharePoint List,Dynamics 365的业务实体作为数据的场景。今天要进一步深入探讨一下。

首先,你要知道的是,一个PowerApps的应用可以使用多个数据源,一个数据源反过来也可以用于多个PowerApp的应用中。在顶部菜单中找到View,点击Data Source可以查看到当前这个应用中能用到的所有数据源,当然也可以添加你需要的其他数据源。

其次,你需要掌握几个常见的数据筛选函数。虽然一个应用中能支持多个数据源,但是它没有办法像PowerBI 那样在这些数据源建立映射和关系。那么,当我希望根据用户的选择,决定对某个数据集合进行筛选、排序等操作时应该怎么办呢?答案是使用数据筛选函数。PowerApps提供了三个非常强大的函数:Filter、Search 和 LookUp。我非常推荐大家要详细阅读 https://docs.microsoft.com/zh-cn/powerapps/functions/function-filter-lookup 这篇文章并且进行实际的操作来加深了解,这是你从会做一个Hello world这样的应用到一个实际能用在工作中的应用必须要学会的。

最后,你需要了解如何在屏幕传递数据。如果我们需要从一个屏幕切换到另外一个屏幕,如何将前一个屏幕的数据传递过来呢?PowerApps提供了上下文变量的概念,而且在很多函数中都自带了这个功能,例如Navigate函数,就可以在第三个参数定义要传递下去的变量和值。下图定义了一个Language的变量,仅在这个Navigate的生命周期内有效。

你还可以通过下面的功能查看所有的变量,以及它们被使用的情况

关于PowerApps的上下文变量的细节,请参考 https://docs.microsoft.com/zh-cn/powerapps/functions/function-updatecontext

如果想要定义在整个应用程序都能用的全局变量,请参考Collect函数 https://docs.microsoft.com/en-us/powerapps/functions/function-clear-collect-clearcollect

对于绝大部分数据源来说,每次都是以当前用户的身份去访问的。所以不管你是一个Excel文件放在OneDrive for Business,还是一个SharePoint List,在分享给同事们之前,你需要确保他们是有权限访问到的。

PowerApps也提供了一个专门的函数(User),用来获取当前用户的邮箱,显示名称,个人头像这三个数据。

使用网关

PowerApps默认支持上百种数据源,尤其是对于云端的SaaS应用有极好的支持。但是,假设你的数据不在支持列表中,或者你的数据是在公司内部的服务器,能否一样享受到PowerApps带来的好处呢?答案是可以,PowerApps通过一个网关(gateway)的技术,可以在你授权的情况下安全地连接到你私有的数据。

点击右上角的New Gateway按钮,你将被引导到一个下载界面

下载完成后双击安装,最后输入你能登录到PowerApps的账号进行身份认证

如果你看到下面这样的界面,则表示配置成功了。我们发现PowerApps,Microsoft Flow,Power BI是共用Gateway这个基础设施的,无需配置三套。

那么怎么使用这个网关呢?我们还是要回到网关的管理界面,你看到现在多出来一个gatewaydemo的网关

接下来,你在新建连接的时候,选择你的数据源类型(例如SQL Server)后,在具体配置的时候,选择使用Connect using on-premises data gateway

详细步骤你还可以参考 这篇文章

应用生命周期管理

本文的结束,我想要给大家介绍关于PowerApps的应用生命周期管理的概念。PowerApps是面向业务用户、快速开发和迭代的一个平台,只有这样才能满足随需应变的业务需求。所以,你会快速开始工作,发布你的应用,然后在使用过程中,根据反馈再快速调整设计,然后又重新发布。这样就带来一个版本管理(或者再往大里说——应用生命周期管理)的问题。

PowerApps会为每次发布保存一个版本,例如下图可以看到我的AppTest这个应用,目前两个版本,而版本2是目前在使用的(Live)

如果你发现版本2并不是很稳定,或者某些功能并不是你所预期的那样正常工作,你完全可以在这里回滚到版本1,通过点击版本1的Restore按钮即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark一些组件的定义

Driver program: 运行应用程序的main函数并创建SparkContext的进程 除了RDD的最终执行所写的业务逻辑&#xff0c;剩下的都在Driver里生成&#xff0c;Driver端执行action算子才会到开始执行所创建的DAG-RDD图。 Cluster manager&#xff1a; 用于获取集群资源外部服务 Mas…

【转】D365 FO第三方集成(二)---访问认证(获取访问令牌)

D365 FO 在github上发布了第三方访问D365 FO的示例代码&#xff0c;里面包含了各种调用示例&#xff0c;代码很清晰。https://github.com/microsoft/Dynamics-AX-Integration 这篇blog简单分析一下代码中获取访问令牌的部分代码。 与获取访问令牌相关的代码有两个类ClientConfi…

【转】D365 FO第三方集成(三)---服务实现

D365 FO的Custom Service的实现比AX2012简单了很多。 AX2012服务方法要用属性SysEntryPointAttribute标记&#xff0c;添加到Services以后&#xff0c;还要发布服务并在系统管理入站端口添加操作&#xff0c;服务运行在CIL下&#xff0c;所以每次改动服务方法的代码都要增量生成…

PHP连接sql seaver数据库

我的PHP版本7.0 通过sqlsrv系列函数&#xff0c;需要下载安装Microsoft Drivers for PHP for SQL Server驱动&#xff1a; 地址&#xff1a;https://msdn.microsoft.com/library/dn865013.aspx。 根据自己需求下载安装&#xff0c;安装地址php下ext目录下&#xff0c;我的是4.0…

NoSql理解+传统关系型数据库ACID+Nosql的CAP+BASE的理解

1&#xff09;什么是Nosql NoSQL(NoSQL Not Only SQL )&#xff0c;意即“不仅仅是SQL”&#xff0c; 泛指非关系型的数据库。随着互联网web2.0网站的兴起&#xff0c;传统的关系数据库在应付web2.0网站&#xff0c;特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显…

ztree 点击重载 layui table

ztree 点击重载 layui table <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <HEAD><TITLE> ztree_demo </TITLE><meta http…

数据结构与算法 - 稀疏数组(理解+代码实现案例)

举例 稀疏数组第一行是原数据几行几列和几个有效数据的个数 下面的行是各个有效数组的行列与具体值 稀疏数组实现 代码实现 package DataStructures.sparsearray;/*** 二维数组转稀疏数组 与 稀疏数组转成二维数组*/ public class SparseArray {public static void main(Stri…

数据结构 - 队列(非环形队列,以及优化成环形队列)

1&#xff09;队列的定义与实现形式-方式 2&#xff09;队列实现思路&#xff08;非环形&#xff0c;下面进行优化&#xff09; 3&#xff09;代码实现&#xff08;注意并不是环形&#xff09; package DataStructures.queue;import java.util.Scanner;/*** 使用数组模拟队列*…

爬取网易云音乐歌曲特色榜单信息

网易云音乐(iframe内的歌单) 刚开始学习做下记录 需要先下载好所需浏览器内核 我时谷歌&#xff0c;下载地址 http://chromedriver.storage.googleapis.com/index.html 然后没了&#xff0c;自己F12扒拉下就行了 运行&#xff1a; 左侧随便点击一个榜单后&#xff0c;复制ur…

数据结构 - 单链表(Linked List)实现在内存中实现数据以链表形式生成并根据序号排序

下面实现一个例子来进行学习 1&#xff09;介绍 单链表的逻辑结构 在内存中的实际结构 具体创建示意图&#xff1a; 2&#xff09;代码实现 例子 1。第一个程序在添加的时候并没有按照序号排序&#xff0c;如果在添加的时候把位置改变输出的时候序号会改变 package DataStr…

Mysql count() 语句

百万数据测试 select count(主键) from table 执行效率&#xff1a; select count(*) AS AGGREGATE from table 以上测试均再 navicat 工具进行 由于各种原因&#xff0c;sql执行时间可定存在一定误差&#xff0c;但最终结果不变。

phpStydy+wordpress 安装部署

1、先准备工具包 下载phpstudy&#xff0c;下载地址&#xff1a;https://www.xp.cn/ 下载wordpress &#xff0c;下载地址&#xff1a;https://cn.wordpress.org/download/ 2、安装phpStudy&#xff0c;下一步操作即可 3、安装完成后&#xff0c;检测环境配置&#xff0c;php、…

java数据结构 - 单链表(腾讯面试题实现单链表反转)

直接上实现代码 //单链表的反转public static void reverseList(HeroNode head){//如果当前链表为空&#xff0c;或只有一个节点&#xff0c;无需反转if (head.next null || head.next.next null){return ;}//定义一个辅助变量&#xff0c;帮助我们遍历HeroNode cur head.n…

数据结构 - 链表(双向链表学习)

程序里有几个注释的地方还是需要特别注意的&#xff0c;根据单链表自己的逻辑来写一遍双向链表&#xff0c;可能有几个细节处理的不到位。 package DataStructures.LinkedList;public class DoubleLinkedListDemo {public static void main(String []args){System.out.println…

【转】Mac下 如何配置虚拟机软件Parallel Desktop--超详细

Mac下 如何配置虚拟机软件Pparallel Desktop--超详细 Mac 的双系统解决方案有两种&#xff0c;一种是使用Boot Camp分区安装独立的Windows&#xff0c;一种是通过安装Parallels Desktop一类的虚拟机软件运行Windows。采用虚拟机的方式优势更明显&#xff0c;可以灵活的在两个系…

数据结构 - 链表(单向环形链表)(约瑟夫问题)

问题如下&#xff08;与分析&#xff09; 构建思路 输入一个数&#xff0c;数到这个数的小孩出圈&#xff0c;出圈顺序的思路 代码实现 根据图解&#xff0c;来一步一步实现 //根据用户输入&#xff0c;计算小孩出圈顺序/**** param startNo 表示从第几个小孩开始数数* param …

【转】什么是ERP、SCM、CRM?

ERP、SCM、CRM的区别 &#xff08;1&#xff09;从管理理念上来说&#xff0c;ERP的管理理念是提高企业内部资源的计划和控制能力&#xff0c;讲究的是在满足客户、及时交货的同时最大限度地降低各种成本&#xff0c;通过提高内部运转效率来提高对客户的服务质量&#xff0c;是…

【转】理解OAuth 2.0

作者&#xff1a; 阮一峰 日期&#xff1a; 2014年5月12日 OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;在全世界得到广泛应用&#xff0c;目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程&#xff0c;做一个简明通俗的解…

数据结构- 栈(实现综合计算器)(一位数计算 扩展到 多位数计算)

思路 代码&#xff08;可以看到这里的数字只能是单位数字&#xff0c;那么如何改成可以是多位数呢&#xff1f;&#xff01;往下看&#xff09; package stack;public class Calculator {public static void main(String[] args) {//完成表达式运算String expression "7…

数据结构 - 栈(数组模拟栈操作)

数组模拟栈操作 package stack;import java.util.Scanner;public class ArrayStackDemo {public static void main(String[] args) {//测试ArrayStack//创建栈ArrayStack arrayStack new ArrayStack(4);String key "";boolean loop true;Scanner sc new Scanner…