動態

詳情 返回 返回

Power Apps Canvas Tips - 動態 詳情

一、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 )

 

user avatar cnaxuser 頭像 jianyus 頭像 hhelibeb 頭像
點贊 3 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.