cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Robert94
Responsive Resident
Responsive Resident

How can I add a Sequence column to a gallery? I want for each row to show a RowNumber, and to be able to delete an item form gallery and refresh the RowNumber column?

So this is the code used to add a row in the gallery

Patch(S2T1_MeetingActions, Defaults(S2T1_MeetingActions), {Title:dcvTitle.Text, Action:"", ActionBy:"", DueDate:""});
Collect(colMeetingActions, Last(S2T1_MeetingActions));

And this is the code to remove the row

Remove(S2T1_MeetingActions, LookUp(S2T1_MeetingActions, ID = ThisItem.ID));
RemoveIf(colMeetingActions, ID =  ThisItem.ID);

And this is how the gallery looks

Robert94_0-1665232523000.png

I want in the No. column to show the RowNumber for each row added, and also refresh the whole RowNumber sequence when a row is deleted.

Any help please?

 

4 REPLIES 4

@Robert94 

 

If this is a SharePoint List, I highly recommend not to do this and instead use the out-of-the-box ID column.

If you really want it, you can use the below as starting point. Since i don't recommend it I'll only give a general approach, you can try and figure out the rest.

 

//untested - pseudocode - you may need to adjust the below

With
(   
   {c:colMeetingActions}
  ,Patch
   (
       yourDataSourceName
      ,c
      ,ForAll
       (
           Sequence(CountRows(c)) As myIndexNo
          ,{No:myIndexNo.Value}
       )
   )
)

 

 

I wrote the above and did not test it so you may need to adjust,

however if it really works, you should get a column called No that you can use in your Gallery.

 

Please note, you may need to create a column your data source called No and you can set it to either Single Line of Text or Number for above to work, then you may need to add the field to your Gallery by refreshing the data source (click db icon on left, then click ellipses to right of data source, then click Refresh) and then making appropriate adjustments to the Gallery.

 

Again, I don't recommend generating this sort of number yourself and I recommend to let the data source do that e.g. ID of SharePoint. If you really want to anyway, try the above as starting point.

 

In order to "refresh" it as you are saying, you must run the above formula again after the record was removed and after your Collection colMeetingActions was updated with the record removed to regenerate all the numbers again for all the records and update all the records.

 

In my formula, you may notice I put the ForAll inside the Patch. This is to make it so the Patch is only issued once to the data source for all of the Records, rather than to issue one Patch per Record which would be the case if the Patch were inside the ForAll.

 

You can check if it helps @Robert94 

 

 

 

Robert94
Responsive Resident
Responsive Resident

It works very good in the datasource, but I`m not sure why the ThisItem.RowNumber won`t show in the gallery.

Robert94_0-1665392047222.png

 

Robert94_1-1665392059965.png

It shows the text input as blank. What may be the cause?

 

@Robert94 

 

Try these steps: A, B or both, below:

 

If neither work, try C. at the very bottom of this post.

 

A. If you recently added this column RowNumber, try a data source refresh like this:

 

    - Click on the database looking icon on the left side

poweractivate_0-1665058284714.png

 

     - Identify your SharePoint List data source, and to the right, notice the ellipses. Click on these ellipses.

     - In the menu, click Refresh

 

poweractivate_1-1665058376875.png

 

 

See if it helps.

 

 

B. Does adding

 

Refresh(S2T1_meetingActions)

 

after the With help?

 

With
(   
   {c:colMeetingActions}
  ,Patch
   (
       S2T1_meetingActions
      ,c
      ,ForAll
       (
           Sequence(CountRows(c)) As myIndexNo
          ,{RowNumber:myIndexNo.Value}
       )
   )
);
Refresh(S2T1_meetingActions)

 

 If the above formula helps, performing the data source refresh with the ellipses steps above in A. should no longer be necessary.

 

Using the Refresh(yourDataSourceName) is, however, not a substitute for the ellipses steps. You do need to do the ellipses steps in A. again though each time you add or modify any additional columns in the data source, so they can be recognized for use in Power Apps Canvas App formulas. 

 

C. What is the Items property of your Gallery?

If it is currently set to a variable or Collection, it's because this variable or Collection is not being updated that you observe this behavior. In that event, consider to use the Data source directly instead for the Items property of your Gallery.

 

If you absolutely must use the variable or Collection, then you could consider this as a possible solution: check out how you're currently building the appropriate Collection or variable now before you're feeding it into the Patch, and just rebuild that Collection again or set that variable again in the same way right after the Patch so that it has the updated records after the Patch, and this will cause the Variable or Collection that the Items property of your Gallery to now have the updated values and this way the Gallery should be updated now.

 

See if any of the above help @Robert94 

Robert94
Responsive Resident
Responsive Resident

Hi @poweractivate I had issues with that code because the gallery was inside a form data card and was bugging, now it works properly, but there is another matter, everytime I add or remove a row the other rows will update as blank,
this is how it`s working:


Datasource/Items gallery: colMeetingActions
Add row button: 

Patch(S2T1_MeetingActions, Defaults(S2T1_MeetingActions), {Title:"", Action:"", ActionBy:"", DueDate:""});
Collect(colMeetingActions, Last(S2T1_MeetingActions));
With
(   
   {c:colMeetingActions}
  ,Patch
   (
       colMeetingActions
      ,c
      ,ForAll
       (
           Sequence(CountRows(c)) As myIndexNo
          ,{RowNumber:myIndexNo.Value}
       )
   )
);

Remove row button:

Remove(S2T1_MeetingActions, LookUp(S2T1_MeetingActions, ID = ThisItem.ID));
RemoveIf(colMeetingActions, ID =  ThisItem.ID);
With
(   
   {c:colMeetingActions}
  ,Patch
   (
       colMeetingActions
      ,c
      ,ForAll
       (
           Sequence(CountRows(c)) As myIndexNo
          ,{RowNumber:myIndexNo.Value}
       )
   )
);


How the gallery looks:

Robert94_0-1665670320281.png
Because of the sequence row, everytime I`m using any of those buttons, the other rows will update as blank, how can I bypass this?

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 (4,083)