Is it possible to select a record in one page and affect what is shown in other page? Or open another page based on what you selected?

The problem is that a page sometimes is too small and will get too cluttered, if you have a list of records where you need to see lots of info, and that record has lost of child tables (1-n)

Example… I have this table for Non Conformities. Each Non Conformity has several fields, like date, sector it happened, description, ISO 9001 article it refers to, responsible for analysis, etc.

So I need to check that data when selecting each one to see the details.

The details are several child tables, that refer to the non conformity.

1 - Immediate Actions
2 - Cause Analysis (5 Whys, Ishikawa, etc)
3 - Action Plans

To have the Non Conformity Table PLUS the other 3 tables in the SAME page, get’s super cluettered imho.

Ideal solution would be to have TABS on pages. So I would have a Cards List of Non Conformities in a Tab and after selecting one non conformity, tab two would be the entire screen with only the 3 other tables.

But as TABS don´t exist (yet) is there any other solution?

Like having a CARDS LIST in one page, and when selecting one of those cards, opening in another Browser Tab the page with the 3 Child Tables already focused only on related records?

1 Like

There is a solution planned that’s similar to tabs on pages, but has been delayed: Expanding/collapsing widgets · Issue #34 · gristlabs/grist-core · GitHub.

Meanwhile, you may get some mileage out of constructing anchor links using formulas. An anchor link is a link to a particular cell. They are described here: Entering data - Grist Help Center.

An anchor link looks like this:
https://templates.getgrist.com/doc/lightweight-crm/p/1#a1.s4.r14.c5

If you can construct it using a formula, then you can create a link in some cells of your document, which open another page in the same document, with a suitable record already selected. You can do it with a formula like this:

SELF_HYPERLINK(page=1, label="link") + "#a1.s4.r{}.c5".format($id)
  • SELF_HYPERLINK() is a built-in function that returns the URL of the current document.
  • page=1 specifies the page to go to (e.g. in https://templates.getgrist.com/doc/lightweight-crm/p/1#a1.s4.r14.c5, it’s the number after /p/)
  • label="link" adds the label before the constructed URL, to make it look better if you use the Hyperlink formatting for this column (remember to change the type of this formula column to Text to have that option).
  • The anchor link portion is obtained by taking a manually copied link-to-cell, and replacing the rowId (after r) with {}, which the .format() function then replaces with a rowId of the current record ($id). If the destination table is different from the current table, you can construct a rowId using a reference column, e.g. replace $id with $Person.id.

Here is an example Class Enrollment - Grist based on an existing template, but I added a “Link” column in the Enrollments widget, which opens the selected student in another page, following the instructions above. In the example, the formula is:

SELF_HYPERLINK(label="Link", page=7) + "#a1.s10.r{}.c25".format($Student.id)
1 Like

Hi Dmitry, thanks for the help. It did work.

Regarding the planned solution

" There is a solution planned that’s similar to tabs on pages, but has been delayed: Expanding/collapsing widgets · Issue #34 · gristlabs/grist-core · GitHub."

What I think is interesting of this solution is that it would allow something similar to INLINE GRIDS.

Because you know… when you have a form, sometimes you want the related table in a SPECIFIC POSITION of your form, almost like if it was a field of the form.

Allowing to position widgets OUT of the screen (that is, the page being larger than the screen, and then scrolling through the page) would also be welcome in some situations.

1 Like

Hi Dmitry, thanks for your comprehensive note (and examples).

SELF_HYPERLINK is probably the most undervalued function, but, to promote usage, this function is the swiss army knife for navigation through complex many-to-many relationships.

1 Like