cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Macwin
Resolver I
Resolver I

Change ComboBox Selected Item with Button "trigger"

As the title mentioned im trying to select the item  in my combi box which is connected with my sql data if the user press a button. 

I already know they are not really working OnClick events  to adress something else. So Im trying to work with UpdateContext. 

 

My Button OnClick/Select Event: 

If(
    FilterModus = true;
   Set (
        Item1;
        {
            _Type: ComboBox1_3.Selected.Result;
            _Manufacturer: ComboBox1_7.Selected.Result;
            _Description1: ComboBox1_8.Selected.Result;
            _Description2: ComboBox1_9.Selected.Result
        }
    );
    UpdateContext({ButtonPressed1: true})
)

 

I thought im going to get the selected Item with the Default Property of the Combobox itself.

 

If(
    ButtonPressed1 = true & FilterModus = false;
    First(
        Filter(
            '[dbo].[Devices]';
            Text(Item1._Type) in Type
        ).Type
    );;
    UpdateContext({ButtonPressed1: false})
)

 

But like this nothing happens. My Record variable Item1 has values though.

20 REPLIES 20

separately 

 

If(
   ButtonPressed1 = true && FilterModus = false;
   First(
      Filter(
         '[dbo].[Devices]';
         Text(Item1._Type) in Type
      ).Type
    ))

 

It works. Also the if case is not the problem at all.

So the three pieces are not the problem but only if the are handled together. But this exatly what I need.

 

here is a little Screenshot of my current ui. the first goal of the ui is to do the flow as fast as possible.

Thats why I want to add something like favorites 

image.png

I really need to distinct my data first because of duplicates. is there an other way to delegate my data with a distinct  syntax ? 

And with button trigger it should autoselect the item. thats why I thought I should use First Function 

Thanks @Macwin ,

How many Types do you have and are they relatively static?

You can get around this one if this is the case by reference lists. You can then simply query these - more than 50% of my choice fields are collected and/or filtered from these.

 

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.

 

the number of devices types or devices at all are not settled. And since the Device table is going to be handled like a catalogue I really need to use something like distinct for handling duplicates. The Device Table is flat. For example

NotebookLenovoXYZ1
NotebookLenovoXYZ2
NotebookLenovoXYZ3

 

Output in PowerApps is 

Combobox Items : Type -> Notebook

Combobox Items : Manufactuer -> Lenovo

Combobox Items : Description -> {XYZ1; XYZ2; XYZ3}

Its like a nested filtersystem 🙂

This is already working without the favorite feature I want to implement.

 

This is how it works (its just the favorite function without distinct method)

 

03-03-_2020_11-53-39.gif

 

And this is the way an user can select the device without using favorite button

28-02-_2020_13-06-45.gif

So everything works except if the are used together 😞 

 

Thanks @Macwin ,

I have answered a couple of posts on triple filters - it is good to see you have it totally under control.

The types are easy can Collect these hard-coded

ClearCollect(
   colType,
   {
     Type:Laptop
     Type:Notebook
     Type:Monitor
      . . . . .  .      
    }
)

or you could collect them from a reference list

ClearCollect(
   colType,
   TypeList    //this being the table name with Type as the only field
)

Your dropdown Items would in both cases would be colType.Type

Manufacturer would probably be the same (particularly the reference list)

Now for ongoing management of the reference lists, it is easy after any new item is entered to check if is exists on the list and it not Patch a new record.

 

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.

But how does this collection system affect my problem with saving & loading the specific record as optional possibilty ? 

 

//Saving current values

   ClearCollect(
        Item1;
        {
            _Type: ComboBox1_3.Selected.Result;
            _Manufacturer: ComboBox1_7.Selected.Result;
            _Description1: ComboBox1_8.Selected.Result;
            _Description2: ComboBox1_9.Selected.Result
        }

 

Hi @Macwin ,

I was saying only do collections for the ComboBox/DropDown values - about 80% of mine are done that way and most off reference lists, which are self-managed as described in my last post.

The Manufacturer is easy as there will be no duplicates. The Type would need some thought, but could include a second column for Manufacturer to give all the combinations. If you do this, you do not need the first list as after collecting, it would then be easy to do both distinct queries. Also you simply write new records when an item is entered that is not on the list. You then do not have to worry about complex filters as all queries work on collections. 

This is only one solution option, but I am familiar with it and it works.

 

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.

Oh Pardon me. I forgot to mention. Im writing/patching this Values (Only the deviceID) as referential foreign key into another table. 

But I like the idea to manage this with collections since there are  not any traffic perfomance problems. But I already know Collections are not fully supported using it in Forms components. 

 

Could you be more specific with "The Manufacturer is easy as there will be no duplicates." Why are there no duplicates in collections ? 

 

By the way I dont get any delegate warnings using Distinct Method

For example -> 

 

Distinct(Filter('[dbo].[Devices]';ComboBox1_3.Selected.Result in Type).Manufacturer;Manufacturer)

 

 

 

I will try it with the collection and maybe my Error with loading specific variable/collection (Item1) is solved 🙂 

 

 

Hi @Macwin ,

I am a SharePoint user, so I can only go off MS documentation (which I have found in the past to be not totally up to date)

If you do not have delegation issues with Distinct or In, then collections only represent a performance improvement (but a good one).

With my duplicate comment, imagine Manufacturers as you would in a normalised data set - you have a table with one record for each (and their static details) and reference it when required. I have lists the same and collect the fields I need for DropDowns/ComboBoxes (and use Lookups to get other data from it).

 

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 made it working with Collection but I still cant load the selected Value which is saved as variable  (Im using only the ID now as reference)  to my comboxes :S 

 

It only works without distinct 

If(
ButtonPressed1 = true And FilterModus = false;
Filter(
DeviceList;
Id = Item1
).Type;
DeviceList.Type
)

Else case must something like Distinct 

 

03-03-_2020_15-42-53.gif

I dont get it working with Distinct 😞

 

Its working 🎉

 

Item Syntax from Combobox 

Distinct(
    If(
        ButtonPressed1 = true And FilterModus = false;
        Filter(
            DeviceList;
            Id = Item1
        ).Type;
        DeviceList.Type
    );
    Type
).Result

 

Select Item Syntax on Button Triggered

 

Comboxbox Property DefaultSelectedItems 

First(
    Distinct(
        If(
            ButtonPressed1 = true And FilterModus = false;
            Filter(
                DeviceList;
                Id = Item1
            ).Type;
            Blank()
        );
        Type
    ).Result
)

 

Its kinda dirty and Im sure there is better way to implement this feature.

Anyway this problem did cost some time and Im fine with this solution at the moment 🙂

 

Thanks again @WarrenBelz  for your big help. Wouldnt solve it without your tips 

 

 

View solution in original post

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Top Kudoed Authors
Users online (1,989)