cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
lumberjacklurch
Post Patron
Post Patron

Need help with customized form

I all,

I need help (again).  I'm working on a customized form that is linked to a SPO list (obviously).  In the form, I have a gallery, where, if a person is putting in a new entry, can make a list if items to be included in that entry.  The problem I have now, is how to populate the gallery in the customized form when someone clicks on/opens an existing item in the list.  I've tried to use ThisItem.<whatever> in the default values of the gallery, but it doesn't seem to be doing the job.  Any ideas how I can make this work?

29 REPLIES 29

My main reason is because I don't know how I'd save/recover the data if a user entered more than one item.  Say I were to make columns for each part of the Item Details:

 

Item Name       |        Item Description        |         Item Quantity

PC                             DELL                                      1

 

For a single item, I agree, easy.  But for a multi-line record:

 

Item Name       |        Item Description        |         Item Quantity

PC                             DELL                                      1

MAC                         Apple                                     3

Tablet                       Acer                                       2

 

How do I put them back into a gallery?  Put them into a collection somehow?  I'm not sure yet how that would work.

Have you considered using a gallery and a edit/new form linked to it? The gallery being used for navigating through your list and the form for data entry/modification, this way it is submitted at each line you modify or add.

The gallery is part of a form.  

The scenario I'm working for is this, I have a group that needs to compose a list of items to sell.  The form collects the department name, location, accounting info, and a list (the gallery) of items for sale from that department.  Since the list of items can be more than one row, I have to concat the gallery entries and save them to a multi-line text field.  As I said before, this works great if all users are doing is data entry.  But when they open an item in the list, I want the multi-line text field to show up and display the list of items for sale that were entered when the record was created.  I don't even need to be editable, they just need to display.  I've gotten it to the point where I can split the multi-line text by carriage return, and put the results into a collection, but I'm not sure how to proceed from there.  I thought about using Left/Mid/Right to parse out the values for the gallery, but those require Text input, and Split/a collection is a Table input.  I tried using ForAll, but that only lets you use Patch and Collect.  To use those I would still need to use Left/Mid/Right but I still run into the input type problem.  I'm racking my brain trying to figure this out, but I keep hitting walls.

OK, I think I've made some progress.  After watching a couple of YouTube vids, I discovered the SharePointIntegration options.  More specifically, the On View option.  Now, it still doesn't work, but I got this in the On View option without any errors:

 

ClearCollect(col_ItemDetailView,
AddColumns(Split(ItemDetailValue.Text, Char(13)),
"Item", Left(Result,Find("|", Result)-1),
"Description", Mid(Result,Find("|", Result)+1, Find("|", Mid(Result,Find("|", Result)+1))-1),
"Quantity", Mid(Mid(Result,Find("|",Result)+1),Find("|", Mid(Result,Find("|", Result)+1))+1))

 

Like I said, it doesn't display anything, but I feel it's a step in the right direction.

Have you looked at the results in the collection (namely col_ItemDetailView) to see if values are populated or not ?

@Mr-Dang-MSFT , wondering if you could weigh in on this? Basically, the "new item" form uses a gallery with text input fields to replicate InfoPath's "repeating table" control (a la Shane Young's method) but then concatenates the data into a single multi-line text field. So...

 

Qty     Item        Description

2         Laptops   Dead old laptops, good for parts

3         Tablets    Functional Android tablets

 

is concatenated into/becomes (again, in one multi-line text field)...

2 | Laptops | Dead old laptops, good for parts <line break>

3 | Tablets | Functional Android tablets

 

What we need to do is, when an existing item in the SP list is Edited, split that data back out into its components (in a collection) so that the same (or a similar) gallery/text field arrangement can be used to update the data. Actually, this might be a good candidate for a Component (if they can be connected to a Collection?).

 

In pseudo-code, what I think needs to happen is:

 

Split-Into-Columns(Split-Into-Rows(ML-Text-Field,<row-delimiter>),<column-delimiter>)

 

with one or more "ApplyToAlls" or "ForEaches" thrown in there. 

@ZePowerDiver It's not, which is discouraging.  I don't think my syntax is wrong.  I get no errors.  I assume the collection is empty because when I'm editing the customized form, I am not simultaneously opening an item from the list.  So, since no item was selected, there is not a value for the ItemDetailValue field.

In addition, it's unfortunate that (so far) there is no way to emulate the user behavior for a customized form.  Meaning, there's no way, while you are editing a customized form in PowerApps, to mimic a user clicking on an item to view it or clicking on the Edit button when they have an item open.  It would definitely be helpful in this situation.


@ChadVKealey wrote:

Qty     Item        Description

2         Laptops   Dead old laptops, good for parts

3         Tablets    Functional Android tablets

 

is concatenated into/becomes (again, in one multi-line text field)...

2 | Laptops | Dead old laptops, good for parts <line break>

3 | Tablets | Functional Android tablets

 

In pseudo-code, what I think needs to happen is:

 

Split-Into-Columns(Split-Into-Rows(ML-Text-Field,<row-delimiter>),<column-delimiter>)


 

If I'm understanding, you write a pseudo table into a single field. One thing I'd caution here is that you may encounter caps on how many characters you can have in a single field. For instance, SQL has 4000 max characters.

 

That said, you'd need an action that upon selecting a record to edit, you'd do something like this:

// Set the selected record.
Set(selectedRecord,ThisItem);

Place the form in the right mode
EditForm(Form1); ForAll( // Split the entries by line break RenameColumns(Split(ThisItem.Column,Char(10)),"Result","TextInEachLine"), Collect(repeatingSection, { // Split up the text in a line by the pipe. Get the nth result to represent each column. Qty: Last(FirstN(Split(TextInEachLine,"|"),1)).Result, Item: Last(FirstN(Split(TextInEachLine,"|"),2)).Result, Description: Last(FirstN(Split(TextInEachLine,"|"),3)).Result } ) )

So I'm splitting each line of text in the multi-line text field. Char(10) is a line break. If it's not recognized, there's a few other methods to try. MatchAll is more powerful and may be needed depending on how you do linebreaks.

 

Then I split the text in each line by the pipes to determine the content for each column I actually want to collect.

 

Split creates a table of the things separated by pipes. FirstN gets n rows, but you want only the last one in that subset, so you use Last. This is how to get the nth row. It's a nice pattern because the structure is very similar, you just change 1, 2, 3... n for the order of your columns.

 

Let me know if you need further guidance on this.

Mr. Dang,

Thank you very much for the reply.  
How would I get this to work in a customized form?  Where would I put this code so when a user clicks on an item in the SPO list, they can view the split text in a gallery?

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Power Apps Ideas

Check out the New Ideas Site

We are excited to announce a new way to share your ideas for Power Apps!

Top Solution Authors
Top Kudoed Authors
Users online (5,222)