Power Apps Canvas Tips
  FN4dam8B0W6p 2024年01月20日 27 0

一、EditForm为新建时设置DataCard字段的默认值

1、文本

If(DetailEditForm.Mode=FormMode.New,myself.FullName,ThisItem.Applicant申请人)

2、时间

If(DetailEditForm.Mode=FormMode.New,Now(),ThisItem.收料日期)

3、人员

在窗体的OnVisible中设置:

Set(myself, User())

然后使用

If(DetailEditForm.Mode=FormMode.New,{
DisplayName: myself.FullName,
Claims: "i:0#.f|membership|" & myself.Email
},ThisItem.Applicant申请用户)

还可以设置经理

Set(myself, Office365Users.MyProfileV2());
Set(manager, Office365Users.Manager(myself.id))

获取部门
Office365Users.MyProfileV2().department

4、选项

If(DetailEditForm.Mode=FormMode.New,{Value:"待审批"},ThisItem.'Order Status状态')

 

二、给DataCard通过PowerFx设置值并提交审批

 

 DataCard的Default增加If(IsBlank(varTriggerApproval),ThisItem.是否审批,varTriggerApproval)

同时审批按钮的OnSelect增加Set(varTriggerApproval,true);Set(varNewRecord,SubmitForm(Form5));

 

三、通过Url中的参数指定打开App时的Sceen及gallery选项

1、App的OnStart中设置 

If(
Param("Screen") = "DetailScreen",
Navigate(DetailScreen)
)

2、Gallery的Default中设置

If(IsBlank(Param("ID")),{},LookUp(ShowColumns('Scrap Parts Application Order', "Title","ID"), ID = Int(Param("ID"))))

3、可以通过url访问

https://apps.powerapps.com/play/e/XXXXXXXX&Screen=Screen2&ID=2

 

四、App.OnStart中使用Navigate方法

 

 在App的设置中选择 即将推出的功能——已停用——在App.OnStart中启用Navigate函数

 

但是这样会对性能产生很大的影响,不建议使用这种方法,建议使用App.StartScreen代替,If(Param("Screen")="Screen1",Screen1,Screen2)

 

五、创建可滚动的Screen

创建Screen的时候可以选择“可滚动的Screen”,但是对于已经创建好的Screen,是无法直接改为可滚动的。另外可滚动的Screen中的Canvas目前也无法插入Form和Gallery,所以可以通过另外的方式创建滚动条

1、在Screen中插入一个垂直容器,并将垂直窗口的垂直溢出设为滚动

       

2、将其他控件添加到窗口中

 

六、通过Gallery实现可编辑的子表

默认的显示子表的控件有“数据表”,但是这个只能查看不能直接编辑,不是很方便,所以考虑通过Gallery来实现一个可编辑的子表

 

1、 先放入一个水平容器,用来存放创建、保存按钮

2、再放入一个垂直容器TableContainer,用来存放 工具栏、表格表头以及Gallery表格

3、在TableContainer容器中加入TableHeaderContainer,将此容器的灵活高度设为false,并插入文本控制显示表头

4、在TableContainer容器中加入垂直空白库,在里面加入各种输入控件,设置控件的Default为ThisItem.XXX,设置控件的Width等于上面文本显示控件的Width,设置设置控件的X等于上面文本显示控件的X

5、给按钮增加方法

添加按钮:

Patch('Scrap Parts Application Orderline',Defaults('Scrap Parts Application Orderline'),{Title:"不良品入库单"+Text(OrderListGallery.Selected.ID)+"明细",Classes班次:ddlClassed.Selected,MainListId:OrderListGallery.Selected.ID});
Refresh('Scrap Parts Application Orderline');
Reset(OrderLinesGallery);

保存按钮:

ForAll(OrderLinesGallery.AllItems,Patch('Scrap Parts Application Orderline',{ID:ThisRecord.ID},{Classes班次:ddlClassed.Selected,Model型号:tbModel.Text,成品工位号:tbProductStation.Text,半成品工位号:tbSemiFinished.Text,不良描述:tbFault.Text,CR04:tbCR04.Text,Equipment设备:tbEquidment.Text,Operation操作:tbOperation.Text,质量分析:tbQualityAnaly.Text,CR01:tbCR01.Text,料费处理:ddlMaterial.Selected,扣款情况:ddlDeduction.Selected,Description备注:tbDesc.Text,Quantity数量:Int(tbQuantity.Text),Logistics物流:tbExpress.Text,Design设计:tbDesign.Text}));

Refresh('Scrap Parts Application Orderline');

Reset(OrderLinesGallery);

 

七、Form里面通过选项集的值设置其他数据卡的可见性

在要设置的数据卡中找到Visible属性,设置为DataCardValue8.Selected.Value="外部使用收费External Have to pay"

注意选项的值是要找对应的选项控件的Selected.Vaue,而不是选项字段的数据卡的Default

 

八、根据状态给文本框设置不同的颜色

找到文本框的Color属性,设计公式If(ThisItem.OrderStatus.Value="完成",RGBA(153, 153, 153, 1),RGBA(0,0,0,1))

 

九、比较当前用户和人员字段的用户

可以通过User()获取PowerApps当前登录用户,但是通过If(User()=varSelectedRecord.Applicant)会匹配不上,因为是不同类型的对象

所以可以比较他们的属性If(User().Email=varSelectedRecord.Applicant.Email)

但是要注意,即使同一个用户可能他们的邮箱会不同,因为一个是Dataverse中的用户下的邮箱,一个是AAD中的用户的邮箱,可能设置得不一样

 这里可能需要引入Office365User连接器,然后通过MyProfile V2进行对比

 

十、嵌入超链接

1、可以通过Html文本控件

将Html文本 控件的HtmlText设为"<a href='http://baidu.com'> 点击打开百度 </a>"

2、可以在文本标签控件的OnSelect属性中调用Launch方法

Launch(Url, Parameters, Target)

Target: New, Replace,name

Launch( "http://bing.com/search", 
{ q: "Power Apps", count: 1 }, 
LaunchTarget.Replace )

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年01月20日 0

暂无评论

FN4dam8B0W6p