web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / In my Canvas App, how ...
Power Apps
Answered

In my Canvas App, how do I update related SP TASKS list Gallery on the bases of the updates in the SP ITEMS list Gallery?

(0) ShareShare
ReportReport
Posted on by 559

Hi:

See attached.

I have two related SP Lists: ARMSitems and ARMStasks. One ITEM can have many TASKS.

The Galleries are created from Collections based on the SP Lists.

The ITEMS List ID is used as a Reference ID in TASKS list as a Column ItemID (Data Type Number).

 

On My ITEMS screen, when I change a record to "Inactive" status from an "Active" status, below is my code for the Update Data button for OnSelect property:

UpdateIf(colGalItemsData,ThisRecord in colSelectedItems,{ItemActive:If(drpItemActiveStatusAI.Selected.Value="Active", true , false )});
Clear(colSelectedItems);
Reset(chkSelectAll_ItemsAl);

 

And for Save Data button on ITEMS screen, the Code for OnSelect property is:

Patch(ARMSitems,ForAll(colGalItemsData As MyCollection,{ID:MyCollection.ID,ItemActive:MyCollection.ItemActive}));

 

I want to change/match the Active Status of all the Related Tasks, if an ITEM's Active Status is changed.

 

Below is the code for TASK Screen:

Code for Update Data button for OnSelect property:

UpdateIf(colGalTasksData,ThisRecord in colSelected,{Active:If(drpActiveTaskStatusAT.Selected.Value="Active", true , false )});
Clear(colSelected);
Reset(chkArchiveTasksAllAT);

 

And, the code for the Save Data button for OnSelect property:

Patch(ARMStasks,ForAll(colGalTasksData As MyCollection,{ID:MyCollection.ID,Active:MyCollection.Active}));

 

Thank you for your consideration.

SueA.

 

ITEMS_ARCHIVE_10292023.png
TASKS_ARCHIVE_10292023.png
Categories:
  • v-jefferni Profile Picture
    Microsoft Employee on at

    Hi @SueA ,

     

    Could you please clarify your issue first? Are those Update and Save buttons on ITEMS screen working? If the answer is yes, you can simply update the TASKS list based on the colGalItemsData collection, filter tasks list and Patch:

    Patch(ARMSitems,ForAll(colGalItemsData As MyCollection,{ID:MyCollection.ID,ItemActive:MyCollection.ItemActive}));
    ForAll(colGalItemsData, UpdateIf(ARMStasks, ItemID = ThisRecord.ID, {Active: ThisRecord.ItemActive}))

     

    Best regards,

  • Verified answer
    WarrenBelz Profile Picture
    156,714 Most Valuable Professional on at

    Hi @SueA ,

    Responding to the PM you sent, I cannot see anywhere in your code how you are relating the ItemID of Tasks to the ID of Items.

    I will try to interpret your requirements as best I can and also make a few suggestions. Firstly your status update on Items (note you do not need If/true/false to set a Boolean field)Your next one (save to list) came from an earlier post I answered

    UpdateIf(
     colGalItemsData,
     ID in colSelectedItems.ID,
     {ItemActive: drpItemActiveStatusAI.Selected.Value = "Active"}
    );

    Your next one (save to list) came from an earlier post I answered

    Patch(
     ARMSitems,
     ForAll(
     colGalItemsData As MyCollection,
     {
     ID: MyCollection.ID,
     ItemActive: MyCollection.ItemActive
     }
     )
    );​

    Now you want to change/match the Active Status of all the Related Tasks, if an Item's Active Status is changed and you have said the ItemID of the Task matches the ID of the Item - but a missing piece here is exactly what colSelected is. You may need to head down this path with the original collection

    UpdateIf(
     colGalTasksData,
     ItemID in colSelectedItems.ID,
     {Active: drpActiveTaskStatusAT.Selected.Value = "Active"}
    );​

    and then save

    Patch(
     ARMStasks,
     ForAll(
     colGalTasksData As MyCollection,
     {
     ID: MyCollection.ID,
     Active: MyCollection.Active
     }
     )
    );​

    I may not have grasped your model fully as (obviously) I cannot see it or your data.

     

    Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

    MVP (Business Applications)   Visit my blog Practical Power Apps

  • SueA Profile Picture
    559 on at

    Hi,  @v-jefferni 

    Many thanks for your support. Also, sorry, I should had identified more clearly the Issue in the above post.

    The UPDATE and SAVE buttons on both ITEMS Screen and TASKS screen working perfectly.

    However, my Goal/Issue is to come up with a query by which:

    If an ITEM’s Status is changed (from Active to Inactive or vice versa) then ALL the related TASKS’ Status should change accordingly and automatically without requiring any manual action of the TASK screen.

     

    The query below that you posted gives me red squiggly under .ItemActive.

    ForAll(colGalItemsData, UpdateIf(ARMStasks, ItemID = ThisRecord.ID, {Active: ThisRecord.ItemActive}))

    Not sure what I can do to fix.

  • SueA Profile Picture
    559 on at

    Hi, @WarrenBelz 

    I cannot see anywhere in your code how you are relating the ItemID of Tasks to the ID of Items.

    Answer to your above post:

    –   I was unable to come up with any working query that would use the Task ID and ItemID relationship, thus this post.

    • Like you posted: The ItemID of the Task matches the ID of the Item (One Item can have many Tasks)

    Here are the Definitions:

    ARMSitems (SP List – All the ITEMS), 

    colGalItemsData (Collection – representing all the data in the SP List ARMSitems),

    colSelectedItems (Collection – representing the selected ITEMS records using Check Boxes in the ITEMS Gallery on the ITEMS screen),

     

    ARMStasks (SP List – All the TASKS), 

    colGalTasksData (Collection – representing all the data of SP List ARMStasks),

    colSelected (Collection – representing the selected TASKS using Check Boxes in the TASKS Gallery on the TASKS screen) - I will change the name to colSelectedTasks instead soon, for future clarity.

     

    Query 1: Used under Update Data button (OnSelect property) on ITEMS screen. Thank you. I learned that aspect. For my query I needed the IF statement as both my lists the Active status is Boolean while the dropdown is a Text. This query works!

    Query 2: Used under Save Data button (OnSelect property) on ITEMS screen. You are correct. I reused your suggested query here and many other places where the concept matched! 😊 This query works as is.

    Query 3: You are right. The Task Selected collection (colSelected) does not apply here (as we are not even going to the TASKS screen and selecting any records for this action) and thus All Data Collection (colGalTasksData) needs to be used. The query works on Update Data button (OnSelect property) on ITEMS screen with a minor adjustment as posted below:

    UpdateIf(colGalTasksData,ItemID in colSelectedItems.ID,{Active:If(drpItemActiveStatusAI.Selected.Value="Active", true , false )});

    Query 4: Posted under Save Data  button (OnSelect property) on ITEMS screen. Under the Query#2 above. This query works!  (Does the job as expected).

     

    I am not sure if understood the logic quite yet of this last query. I need to spend some time to understand it. But, for this moment, I am the happiest camper!

    Huge Thank you.

    In appreciation,
    SueA.

  • WarrenBelz Profile Picture
    156,714 Most Valuable Professional on at

    Hi @SueA ,

    Firstly, you do not need the If/true/false - please refer to this blog of mine 

    If(
     drpItemActiveStatusAI.Selected.Value = "Active", 
     true, 
     false
    )

    simply needs to be 

    drpItemActiveStatusAI.Selected.Value="Active"

    This statement can only have a true or false result and the output of this can be directly reflected in any Boolean field or variable. 

    In the last two queries, the real "work" is done in the first one

    UpdateIf(
     colGalTasksData,
     ItemID in colSelectedItems.ID,
     {Active: drpActiveTaskStatusAT.Selected.Value = "Active"}
    );​

    It is simply updating Task where the ItemID is in the ID of the SelectedItems. (so it updates every Task related to a selected Item) The final bit just patches the result of this back to the Tasks list.

     

  • SueA Profile Picture
    559 on at

    @WarrenBelz 

    Thank you. The explanation was really great and helpful.

    regards,
    SueA.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Leaderboard > Power Apps

#1
11manish Profile Picture

11manish 350 Super User 2026 Season 2

#2
M Bilal Khan Profile Picture

M Bilal Khan 318

#3
Mohsin Ali Profile Picture

Mohsin Ali 220

Last 30 days Overall leaderboard