PL 400 Canvas Apps 2 — Questions and Answers
Question 1: In a Canvas App, which function should you use to navigate to a screen while also passing a context record?
- Navigate(ScreenName, ScreenTransition.Fade, {param: value}) (Correct answer)
- Launch(ScreenName, {param: value})
- Set(gblParam, value); Navigate(ScreenName)
- Param(ScreenName)
Correct answer: Navigate(ScreenName, ScreenTransition.Fade, {param: value})
The third argument of Navigate() accepts a record that becomes available via the context variable on the target screen.
Question 2: A Canvas App needs to call a custom Power Automate flow and use its return value. Which Power Fx expression correctly invokes the flow named 'GetOrderStatus'?
- PowerAutomate.Run('GetOrderStatus')
- GetOrderStatus.Run() (Correct answer)
- Flows.GetOrderStatus()
- Run('GetOrderStatus')
Correct answer: GetOrderStatus.Run()
After adding a flow to a Canvas App, it is invoked using the flow's display name followed by .Run() with any required parameters.
Question 3: You want a Canvas App Gallery to refresh its data without re-running the entire app. Which approach is most efficient?
- Restart the app using Exit(true)
- Call Refresh(DataSourceName) on the gallery's Items property trigger (Correct answer)
- Use Timer.OnTimerEnd to call ClearCollect()
- Set the gallery AutoLoad property to true
Correct answer: Call Refresh(DataSourceName) on the gallery's Items property trigger
Refresh(DataSourceName) forces Power Apps to pull the latest data from the source, updating bound galleries without restarting.
Question 4: Which delegation warning scenario is NOT supported for Dataverse in Canvas Apps?
- Filter by a Text column using StartsWith
- Filter by a Choice column value
- Using the Search() function across multiple columns (Correct answer)
- Filter by a Lookup column GUID
Correct answer: Using the Search() function across multiple columns
The Search() function is not delegable to Dataverse; it processes records locally and is limited to the delegation limit.
Question 5: In Canvas Apps, what is the purpose of the UpdateContext() function?
- Updates a record in the connected data source
- Creates or updates a local variable scoped to the current screen (Correct answer)
- Modifies a global variable accessible across all screens
- Refreshes the app's connection context
Correct answer: Creates or updates a local variable scoped to the current screen
UpdateContext() sets screen-level local variables, which are only accessible within the screen where they are defined.
Question 6: A developer needs to display a loading spinner while a Patch() operation completes. What is the correct pattern?
- Set(isLoading, true); Patch(...); Set(isLoading, false)
- Concurrent(Set(isLoading,true), Patch(...))
- UpdateContext({isLoading:true}); Patch(...); UpdateContext({isLoading:false})
- Both A and C are correct patterns (Correct answer)
Correct answer: Both A and C are correct patterns
Both Set() and UpdateContext() can manage a boolean loading flag; since Patch() is synchronous in sequence, either pattern correctly bookends the operation.
Question 7: When building a Canvas App that must work offline, which data storage option allows local persistence of records?
- SharePoint list
- SaveData() and LoadData() with Collections (Correct answer)
- Dataverse offline tables
- Azure Blob Storage
Correct answer: SaveData() and LoadData() with Collections
SaveData() persists a collection to the device's local storage, and LoadData() retrieves it, enabling offline scenarios in Canvas Apps.
In a Canvas App, which function should you use to navigate to a screen while also passing a context record?