cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
faithdwn
Level: Powered On

Gallery Items

I'm new to powerapps and I am trying to edit an app that was started by another associate. 

 

I have two SPLists: PurpleScan and PIVTickets.

PurpleScan is the list i use to submit any barcodes created with the columns: Title, AssetType, Department and Serial Number. For every unique Serial Number, there is a unique barcode "Title" assigned to it. All through the scanbarcode/findbarcode feature.

PIVTickets is the list where all requests are submitted. 

 

I have a screen that has a gallery (MyTicketsScreenGallery) connected to PIVTickets form. OnSelect property is "Set(SelectedTicket,ThisItem)". Items Property is in the picture below.

What I would like is for PIVTickets list/ MyTicketScreenGallery to display the Barcode "Title" based on the selected Serial Number. 

 

I have created another non visible gallery refrencing the PurpleScan list. However, I can't figure out the formula to filter out the "Title" based on the (MyTicketScreenGallery) Selected Ticket.

 

Please Advise.

 

12 REPLIES 12
Super User
Super User

Re: Gallery Items

Based on what I see here, try using a Lookup to set your Barcode Title, something like: Lookup(PurpleScan, ThisItem.SerialNumber = PurpleScan.SerialNumber, Title) which says look in the PurpleScan table for a match between the SerialNumber of the current item in PIVTickets and a serial number in PurpleScan. If you find one, show the title column from Purple Scan. The syntax may not be exactly right depending on your variable names, but I think this should point you in the right direction. LRVinNC
Super User
Super User

Re: Gallery Items

@faithdwn  welcome to PowerApps!

 

So, if I understand, you have MyTicketsScreenGallery that is a Filter of PIVTickets

In there you have a Label control and want to get the Title column of the item that matches the Serial Number in the PurpleScan list.

I'm not sure I follow the logic of selecting the item in the gallery in order to display the "title".  From your pictures, it seems that the label is in each item in your gallery...wouldn't you want that to be displayed without someone having to select it to display it?

 

If so, there are a number of ways to go about it.  Each will be up to your design.

1) Lookup the value on the label (or it looks like it's a textbox on your gallery):

   MyTicketScreenGalleryTitle.Text (or Default if it's a TextBox) =     

Lookup(PurpleScan, SerialNumberColumn=ThisItem.SerialNumber).Title

This can have performance issues if you have long lists.

 

2) Add the Title into your Gallery datasource when you populate it.  (also note, your "Or" statement on your filter will not work. You need to Or each condition)

   MyTicketScreenGallery.Items =

       

Search(
AddColumns(
Filter(PIVRequests,
Status.Value="Request Submitted" ||
Status.Value="In Progress" ||
Status.Value="Waiting on Parts"),
"BarcodeTitle", Lookup(PurpleScan, SerialNumberColumn=SerialNumberColumnFromPIVRequestsList),
ScanSearch_4.Text, "Column_x0020_Number_x002f_Locati")

Now in your label or textbox you have there in the Gallery, just set it to ThisItem.BarcodeTitle  as it will be part of your datasource for the Gallery now.

 

That should give you two options to go with for now. 

See if that helps you get to the next step.

 

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
faithdwn
Level: Powered On

Re: Gallery Items

Thank you @RandyHayes, it worked great.

 

However, when i want to submit the actual form into PIVRequests, I can't get my formula to update the SPlist with the actual value. The column populates but not its value. 

Can you help with this one also. 

 

Thanks in advance. 

Super User
Super User

Re: Gallery Items

@faithdwn 

I'm not entirely sure what you mean by it populates but not its value - what does it populate with then?

A couple things to keep in mind - you are creating a column for your datasource only for the gallery.

If you are then going to an Edit form, that field will not carry in the way that you think (nor should it).  In your form you will need to do that lookup again, or gather it back from the source gallery.  Then, when you submit, you need to realize thta the column you are adding doesn't exist in the data source and therefore the EditForm will not know what to do with it.  You will need to either put a custom data card in or some other control to display that information.  If you want to update it, you can put that logic in your Submit formula.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
faithdwn
Level: Powered On

Re: Gallery Items

@RandyHayes 

 

Apologies for the vague explanation but you understood what I meant.

I have already updated the edit form with the lookup function. Now, in order to have that value carry into the datasource, what formula would I need to use on the Submit OnSelect property?-View picture below to see what I currently have.

 

Futhermore, I would like that form to submit to two different sources under a specific condition. 

I have two SPLists: PIVRequests and ClosedPIVTickets. The form submits to PIVRequests. I would like for that same form to submit to ClosedPIVTickets with the same exact columns as PIVRequests only if one of my datacard values dropdown is selected. Therefore i only want ClosedPIVTickets SPList to display all Complete requests while PIVRequests SPList submits all open requests. 

 

I tried this formula on the "Submit" button OnSelect Property but it doesn't seem to work how i want. 

If(DataCardValue64.Selected.Value="Completed",Remove(ClosedPIVTickets,First(Filter(ClosedPIVTickets,SERIAL_x0020_NUMBER_x0020_CONFIR=SelectedTicket.Column_x0020_Number_x002f_Locati))));Navigate([@ConfirmSubmitScreen],ScreenTransition.None)

 

Thanks for all your help!

Super User
Super User

Re: Gallery Items

@faithdwn  I think I understood, but I didn't want to assume.

 

Here is the formula what we are working with from your posting:

 

If(DataCardValue64.Selected.Value="Completed",
Remove(ClosedPIVTickets,
First(
Filter(ClosedPIVTickets,SERIAL_x0020_NUMBER_x0020_CONFIR=SelectedTicket.Column_x0020_Number_x002f_Locati)
)
)
);
Navigate([@ConfirmSubmitScreen],ScreenTransition.None)

But, in your picture it is quite something different:

SubmitForm(EditTicketForm);
Set(RunFlow,true);
AddColumns(PIVRequests, "Barcode_x0020_Title", DataCard2.Default);
Navigate([@ConfirmSubmitScreen],None) …(cuts off from there)

So which is it?  Let's at least get to where the trouble is you're having in a formula.

 

But, baring that, I'm going to take a step back and look at your theory.

I have already updated the edit form with the lookup function. Now, in order to have that value carry into the datasource, what formula would I need to use on the Submit OnSelect property?-View picture below to see what I currently have.

 


If you're dealing with an EditForm, your submit action should be SubmitForm(myEditForm).  You've already established a datasource for the Form and given it an Item to work with, so it has all it needs.

 

Furthermore, I would like that form to submit to two different sources under a specific condition. 

I have two SPLists: PIVRequests and ClosedPIVTickets. The form submits to PIVRequests. I would like for that same form to submit to ClosedPIVTickets with the same exact columns as PIVRequests only if one of my datacard values dropdown is selected. Therefore i only want ClosedPIVTickets SPList to display all Complete requests while PIVRequests SPList submits all open requests. 

This is not going to happen with the SubmitForm.  Even if the fields/columns of one DataSource are exactly like another, you can't just switch the sources around on the forms.  

You have two choices:

1) In your submit action, you can patch/update the other list with the long list of fields and a bunch of thisField=thisField statements.  That will absolutely work, but is lengthy to do and - if you change the list in any way, you'll have to maintain that formula and all it's changes.

2) (I like this one) Create another screen.  On it, put a Form for the second list (FormClosed).  Connect its datasource to ClosedPIVTickets.  Change the "logic" of the form that instead of showing values from the datasource, it shows values from your first form.  That way, when you change values in a control in FormRequests (the PIVRequests form), you have the values of the FormClosed's controls set to the values of the FormRequests' controls (for the fields you want duplicated).

Then in your Submit for the first form you would simply do SubmitForm(FormRequests); SubmitForm(FormClosed).

You'll never have function in your App to navigate to that screen, so users will not see it, but you can use it to diagnose issues and to "maintain" your field-to-field copy...in a visual way without putting in all the plumbing yourself.

Why is this a good idea?  Again, this makes the experience more visual and understandable for you and anyone maintaining in the future. 

You will need to deal with the NewForm logic and if you should submit both or not.  

Something like:  DataCardValue64's OnChange action:  NewForm(FormClosed)

Then in your submit for FormRequests: 

SubmitForm(FormRequests); If(DataCardValue64.Selected.Value="Completed", SubmitForm(FormClosed))

 

So, it's a little hard to completely know your solution needs, but based on what I am reading, this would certainly work well.  

BTW - don't be shy about putting "hidden" screens in your app with troubleshooting controls and "common" logic.  This will save you lots of headache in maintaining in the future when you've long forgotten what you did to begin with.

 

Hope this gives fuel for thought.

 

 

 

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
faithdwn
Level: Powered On

Re: Gallery Items

@RandyHayes 

 

Very helpful information. Unfortunately i'm still new to powerapps and don't completely understand everything.  

To clear things up, the formula in the photo is what I currently have for that form. The other formula was an old formula I had tested out.

 

I have two forms in the FormRequests screen (as we'll call it) one for PIVRequets and one for ClosedPIVTickets (this one is obviously not visible). View picture below. Is it okay to do it this way or better to create a new screen for the ClosedPIVTickets as you suggested. 

 

"Change the "logic" of the form that instead of showing values from the datasource, it shows values from your first form." -- I'm not sure how to change the logic. I only know how to pull values from the datasource. 

Also, what do you mean when you say "troubleshooting controls and common logic"?

 

Again, I really appreciate your help and speedy replies!

Super User
Super User

Re: Gallery Items

@faithdwn 

No problem, I know some of the concepts will be a bit out there when you start, but in time will make more sense.

 

Yes, I would put that other form on another screen.  That way you can have it easily available to you as you design your app and don't have to mess with the visible property.

 

Okay, about your formula you have then currently.

The SubmitForm(EditTicketForm) is fine.  Again I would add the logic then to submit the other form based on that Selected.Value="Completed" condition.

I don't know what you are using the RunFlow variable for, but we'll say that is fine.

The AddColumns formula is not doing anything here - at all.

Navigate is fine too.

 

SO, for the most part, if you follow what I mentioned in the last post with your submit statement, that will cover that issue.

 

As for the logic of the other form (I believe this is your ClosedPIVTickets form that you have hidden).

What I am saying here is that you will go into that form and unlock the fields in it as you need them.  Then simply assign the DataCard Default value to the control in your other edit form that you want the value to come from.

So, for example, if you had a "SerialNumber" field in the Requests Form and you also (as you say want this to end up in the Closed list if that "Completed" condition is met) then you will find that SerialNumber field in your ClosedForm and unlock it.  Look at your datacard in the Request form.  It will have a DataCardValuexx.  In the ClosedForm, for the SerialNumber datacard, set the default to DataCardValuexx.Text (or Selected.Value, or whatever kind of control that DataCardValue actually is. 

Now your ClosedForm will have the value that is in the Request record.  And it will change whenever that is changed.  Do this for all of the other fields you want to go over.

If it was me, I would take the extra moments to change the labels on that "hidden" form to be more "dev" descriptive for future maintenance, but that's up to you.

So, now when you submit with the formula above that I stated, if that condition is met, the ClosedForm will submit as well and a new record will be created in your list.

 

The only extra logic you will need to put in is to NewForm that "hidden" form after you submit.  You can do that pretty much anywhere - maybe on the OnChange event of the Status control when it is set to "Completed".

 

As for the statement - "troubleshooting controls and common logic" - I mean that you can put labels and toggles and galleries and forms and whatever else you need to help you troubleshoot problems with your app on "hidden" screens.  And you can refer to them anywhere in your App.  This way you have ONE spot to have a complex formula and then you can "reuse" it everywhere you need it just by referencing it.  Kind of like global variables, but having them in a screen that you can always find them in the future...after you've long forgotten what you did.

Just a suggestion.

 

Hope this helps.

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
faithdwn
Level: Powered On

Re: Gallery Items

@RandyHayes 

Unfortunately this formula isn't working how we intend. Not sure what i'm doing wrong because even when i change the formula around, it still submits the same way. 

I followed your advice with creating a new screen to populate the form (ClosedPIVForm) and changed its logic. See picture below. 

The form submits but it will submit only to the FormRequests datasource regardless of the formula (PIVRequests). SubmitForm(EditPIVTicketForm);If(DataCardValue64.Selected.Value="Completed",SubmitForm(ClosedPIVForm);Navigate([@ConfirmSubmitScreen],ScreenTransition.None))

 

Another issue i'm having is with another gallery I have (MyTicketsScreenGallery).See Picture Below. This is the gallery that navigates to the FormRequests screen. The formula I have up set only returns the "Request Submitted" Items regardless of telling it to return two other values. I've tried changing this formula to use ',' instead of '||' but this won't work. 

 

Please advise. 

Thanks in advance. 

 

Helpful resources

Announcements
thirdimage

Power Apps Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

sixthImage

Power Platform World Tour

Find out where you can attend!

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

SecondImage

Difinity Conference

The largest Power BI, Power Platform, and Data conference in New Zealand

Top Solution Authors
Top Kudoed Authors (Last 30 Days)
Users online (4,716)