cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Iamglt
Helper V
Helper V

Filtering One Drop down box based on the value of another drop down box

Hi,

I have two fields - one Called 'Division' and the other called 'Business Unit'.  There are many business units under each division.  For example:

SP Field: Division:

Corporate

SP Field: Business Unit:

HR

Finance

Legal

IT

SP Field: Division:

Public Engagement

SP Field: Business Unit:

Business Unit A

Business Unit B

Business Unit C

Business Unit D

SP Field: Division:

Directorate

SP Field: Business Unit:

Business Unit E

Business Unit F

Business Unit G

Business Unit H

 

What I would like to do is select the Division in the drop down box, and the Business Unit drop down field will only display the the records related to that particular Division.  For example, if I pick the division of 'Directorate', then only Business Unit E,F,G and H will be available from the in the Business Unit drop down box.  Both data cards (Division and Business Unit) write back to their respective SharePoint fields.  I have created a separate SharePoint list called Business Unit (which has been added as a data source) with the following info:

 

Division, Business Unit

Corporate, HR

Corporate, Finance

Corporate , Legal

Corporate, IT

Public Engagement, Business Unit A

Public Engagement, Business Unit B

Public Engagement, Business Unit C

Public Engagement, Business Unit D

Directorate, Business Unit E

Directorate, Business Unit F

Directorate, Business Unit G

Directorate, Business Unit H

 

Now my question is how do I get the Business Unit field to filter the values from the Business Unit List, then insert the selected value into the original Business Unit field?

 

Any assistance is always greatly appreciated,

Geoff.

 

40 REPLIES 40

Hi @Iamglt ,

What is the Patch code you are using?

Hi Warren,

This is what I had on my Save button:

 

If(
    varMode = "Edit",
    Patch(
        'New Employee Workflow',
        galDashboard.Selected,
        frmEmpDetails.Updates
    ),
Patch(
        'New Employee Workflow',
        Defaults('New Employee Workflow'),
        frmEmpDetails.Updates
    );
Set(
    varMode,
    "Edit"
)

 

And this is what I have tried changing it to (just to save the division field for this attempt):

 

If(
    varMode = "Edit",
    Patch(
        'New Employee Workflow',
        galDashboard.Selected,
        frmEmpDetails.Updates
    );
        Patch(
        'New Employee Workflow',
        galDashboard.Selected,
        {Division: DataCardValue137.Updates}
    ),
Patch(
        'New Employee Workflow',
        Defaults('New Employee Workflow'),
        frmEmpDetails.Updates
    );
Patch(
    'New Employee Workflow',
    Defaults('New Employee Workflow'),
    {Division: DataCardValue137.Selected.Updates})
);
Set(
    varMode,
    "Edit"
)

The division field is a choice field - should I delete and re-create as a text field?  This is the error I am getting on the Save button with the code above:

 

Iamglt_0-1609970484676.png

The Data Card Value label is DataCard137:

 

Iamglt_1-1609970635880.png

However, when I click on the field its called 'Result':

Iamglt_2-1609970700950.png

 

The Items (for the Division Drop Down Box) has the following code:

 

With(
   {wList: 'Business Units'},
   Sort(
      Distinct(
         wList,
         'Division (Title)'
      ),
      Result
   )
)

 

Maybe I should change Result to Division?  Or would updating the Patching on the OnSelect/OnChange for each of the fields be a better option to write back to these fields?

 

Cheers,

Geoff.

Hi @Iamglt ,

Try this

If(
   varMode = "Edit",
   Patch(
      'New Employee Workflow',
      {ID:galDashboard.Selected.ID},
      frmEmpDetails.Updates,
      {Division: DataCardValue137.Selected.Result}
   ),
   Patch(
      New Employee Workflow',
      Defaults('New Employee Workflow'),
      frmEmpDetails.Updates,
      {Division: DataCardValue137.Selected.Result}
   );
   Set(
      varMode,
      "Edit"
   )
)

but I am wondering why you are bothering with the Division as if it is changed in frmEmpDetails, it will be included in the Updates and if not changed will simply retain its value. 

 

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.

I thought it would be included with the frmEmpDetails as well, but both Division and Business Units has never saved - its been driving me nuts for 2 days.  I tried your code above, and I'm getting the following error:

 

Iamglt_0-1609975643472.png

Ive been doing some searching on updating Choice fields, and I tried this as a test, but the record never updates:

If(DataCardValue137.Selected.Result = "Corporate Operations and Services",
Patch('New Employee Workflow',
   Defaults('New Employee Workflow'),
{Division:
 {'@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference",
   Id:0,
  Value:"Corporate Operations and Services"
 }
}))


Cheers,
Geoff.

 

Hi @Iamglt ,

I hope Division is a Choice field (not a Lookup) in your data source - if so

If(
   varMode = "Edit",
   Patch(
      'New Employee Workflow',
      {ID:galDashboard.Selected.ID},
      frmEmpDetails.Updates,
      {Division: {Value:DataCardValue137.Selected.Result}}
   ),
   Patch(
      New Employee Workflow',
      Defaults('New Employee Workflow'),
      frmEmpDetails.Updates,
      {Division: {Value:DataCardValue137.Selected.Result}}
   );
   Set(
      varMode,
      "Edit"
   )
)

Also you do not need

'@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference"

any more - Microsoft quietly dropped the requirement a little while ago.

 

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.

This is from the SP List:

 

Iamglt_0-1609978254448.png

 

That code worked perfectly.  I have just trying to get the BusinessUnit (SP Text Feild to Update):

If(
   varMode = "Edit",
   Patch(
      'New Employee Workflow',
      {ID:galDashboard.Selected.ID},
      frmEmpDetails.Updates,
      {Division: {Value:DataCardValue137.Selected.Result}},
      {BuisnessUnit: {Value:DataCardValue5.Selected.Result}}
   ),
   Patch(
      'New Employee Workflow',
      Defaults('New Employee Workflow'),
      frmEmpDetails.Updates,
      {Division: {Value:DataCardValue137.Selected.Result}}
      {BuisnessUnit: {Value:DataCardValue5.Selected.Result}}
   );
   Set(
      varMode,
      "Edit"
   )
)

 

So can I do multiple field updates as above?  I get red lines everywhere when I add the Business Unit line...

Ok, I have got it to this with no errors, but the Field BusinessUnit is still not saving:

 

If(
   varMode = "Edit",
   Patch(
      'New Employee Workflow',
      {ID:galDashboard.Selected.ID},
      frmEmpDetails.Updates,
      {Division: {Value:DataCardValue137.Selected.Result, BuisnessUnit: {Value:DataCardValue5.Selected.BusinessUnit}}}
   ),
   Patch(
      'New Employee Workflow',
      Defaults('New Employee Workflow'),
      frmEmpDetails.Updates,
      {Division: {Value:DataCardValue137.Selected.Result, BuisnessUnit: {Value:DataCardValue5.Selected.BusinessUnit}}}
   );
   Set(
      varMode,
      "Edit"
   )
)

@Iamglt ,

Your curly brackets were somewhat out of place - if you parse it like this, you will see the structure required (I assume they are both Choice fields in the data source).

If(
   varMode = "Edit",
   Patch(
      'New Employee Workflow',
      {ID:galDashboard.Selected.ID},
      frmEmpDetails.Updates,
      {
         Division: {Value:DataCardValue137.Selected.Result}, 
         BusinessUnit: {Value:DataCardValue5.Selected.BusinessUnit}
      }
   ),
   Patch(
      'New Employee Workflow',
      Defaults('New Employee Workflow'),
      frmEmpDetails.Updates,
      {
         Division: {Value:DataCardValue137.Selected.Result}, 
         BusinessUnit: {Value:DataCardValue5.Selected.BusinessUnit}
      }
   );
   Set(
      varMode,
      "Edit"
   )
)

 

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.

I tried it that way before, and this is what comes up:

 

Capture9.JPG

 

I have to go to a meeting - will check it out more later...

@Iamglt ,

What is the error saying?

Have you pulled it apart and tested both sides of the If statement?
Then take out Division, then BusinessUnit and see which one might be an error.
Are both BusinessUnit and Division Choice fields in your list?

Helpful resources

Announcements
Power Apps News & Annoucements carousel

Power Apps News & Announcements

Keep up to date with current events and community announcements in the Power Apps community.

Community Call Conversations

Introducing the Community Calls Conversations

A great place where you can stay up to date with community calls and interact with the speakers.

Power Apps Community Blog Carousel

Power Apps Community Blog

Check out the latest Community Blog from the community!

Top Solution Authors
Top Kudoed Authors
Users online (2,462)