How to not show a data entry portal row

I have a portal which permits new records to be added, but in some cases I don't want the "add new portal row" option on the bottom of the portal row. Is there some way to filter these out? I tried checking to see if primary key = "" but it didn't seem to filter it out when I did that.

1 Like

You won't be able to hide the row itself. What you can do is hide the objects in the row using the "hide when" calculation. isempty( primary key ) or isvalid( primary key ) will both work.

3 Likes

OK yeah, that's what I've been doing. The hide statements start to get complex because there are other criteria where it might be hidden. I think I might just make a second join without add capability. Thank you!

How about the other way around? Disable the relationship's ability to add records, then add a button that does all the work of adding a portal row by going to the table's layout, creating a record, then returning to the original layout (or something similar). You would then only need to display or hide the button.

2 Likes

Perhaps you can do something like this for your hide calc:

IsEmpty ( RelatedTable::foreignKey ) or 
(
  <your original hide calc>
)

Then when you want to create a new row you can follow @bdbd 's suggested UX workflow and when a user clicks "+" do something like:

Go to Object [ "MyPortal" ]
Go to Portal Row [ Last ]
Set Field [ RelatedTable::id ; Get ( UUID ) ]
Go to Field [ <field in portal row> ]

That should make the fields appear for data entry (as long as your hide calc doesn't hide them in that case)

1 Like

Adding to the above suggestions, you can even put a second portal just above the display one with just one row and create new entries there so it is always at the top.

2 Likes

If you have multiple objects with independent hide conditions, you can group the objects and then add a single hide condition to that group.

3 Likes

That's a great trrick but you have to remember to hide the row as soon as the record is committed which you do in the portal filter. Personally, I use a calc number field with a value of 1 and use that to test whether a record is valid or not.

1 Like

I was going to suggest this. It is my preferred way.

2 Likes

hi @jfletch, glad to see you here

How simple it would have been for FM to add a checkbox option (similar to the existing delete row option) in the portal setup to allow adding rows through the portal. I'm sure it is just a holdover from FM 2 or 3 (or whenever the portal object was introduced), but it would really have reduced the number of TO's over the years.

3 Likes

And scriptable control of the setting!

3 Likes