Grid from Record Data: Indexing out of Grid Selection

Certified Lead Developer

Hello,

I'm displaying a selectable read-only grid on an interface, and the grid is sourced from a record type (entity-backed).  Based on what row the user selects, I want to use various fields from that row elsewhere.

I.e.,

a!gridField(
...
selectable:true,
selectionValue:local!mySelection,
selectionSaveInto: {
        a!save(local!selectedRow, index(fv!selectedRows, length(fv!selectedRows), null)),
        a!save(local!mySelection, index(save!value, length(save!value), null))
      }
)

My local!selectedRow looks great.  But, when I try to reference this elsewhere, like:

local!myselectedRow.name

I get an error: "must be indexed by its corresponding record type fields or relationship".

How can I index this as if it were a CDT? (which...since it is an entity-backed record, I would think I can treat it as a CDT of that entity type).

My only workaround is to do a cast() within my saveInto, but I hope there is a cleaner way.

  Discussion posts and replies are publicly visible

Parents Reply Children
  • 0
    Certified Lead Developer
    in reply to Peter Lewis

    Hi Peter, sample expression and screenshot below - was able to get past the previous error (must be indexed by corresponding fields...) by simplifying this a little.  Results from 3 things:

    1) Index(): doesn't pink error, but doesn't show anything

    2) Property(): pink error below

    3) Dot notation (not shown): Pink error saying you have to use index notation or record type

    a!localvariables(
      local!selectedRow,
      local!mySelection,
      local!pagingInfo:a!pagingInfo(1,10),
      {
        a!gridField(
      data:'recordType!{58c03cbc-9019-4e9b-ae8b-9ad9aa51b64a}Office',
      pagingSaveInto: local!pagingInfo,
      columns:{
        a!gridColumn(
          label:"Office",
          value:fv!row['recordType!{58c03cbc-9019-4e9b-ae8b-9ad9aa51b64a}Office.fields.{ansofficename}ansofficename']
        )
      },
      selectable: true,
      selectionValue: local!mySelection,
      selectionSaveInto: {
        a!save(local!selectedRow,index(fv!selectedRows,length(fv!selectedRows),null)),
        a!save(local!mySelection,index(save!value,length(save!value),null))
      }
    ),
    a!textField(
      label:"Index",
      value:index(local!selectedRow,"ansofficename",null)
    ),
    a!textField(
      label:"Property",
      value:property(local!selectedRow,"ansofficename")
    )
    }
    )

  • +1
    Certified Lead Developer
    in reply to Evan Rust

    I ran into this problem recently again, and figured it out - you can perform the indexing using:

    local!mySelectedRow[recordType!<recordType>.<field>]