Selectable Editable Grid
I have(had) an issue with a Selectable Editable Grid and I don't know if this is a bug or not.
BUSINESS USE CASE
I actually have two grids. The Use Case here is to have the user assign a speaker to a parish for a parish event.
One grid shows unassigned approved speakers and the other shows parishes that do not have a speaker. There are two local variables that are loaded with this data; speakerEvents and parishEvents. The user selects the Speaker, then selects the Parish before submitting the data.
Here is the JSON for one of the grids.
a!gridLayout(
label: "Unassigned Approved Speakers",
labelPosition: "ABOVE",
emptyGridMessage: "There are no Unassigned Approved Speakers for this Event.",
headerCells: {
a!gridLayoutHeaderCell(label: "Speaker"),
a!gridLayoutHeaderCell(label: "Type"),
a!gridLayoutHeaderCell(label: "Language"),
a!gridLayoutHeaderCell(label: "Accommodations")
},
columnConfigs: {
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "NARROW")
},
rows: {
a!forEach(
items: local!speakerEvents,
expression: a!gridRowLayout(
id: fv!index,
contents: {
a!textField(
label: "Speaker",
labelPosition: "COLLAPSED",
value: rule!PMSO_GetSpeakerFullNameTextBySpeakerId(
fv!item['recordType!PMSO Speaker Event.fields.speakerId']
),
readOnly: true
),
a!textField(
label: "Type",
labelPosition: "COLLAPSED",
value: rule!PMSO_GetSpeakerTypeTextBySpeakerId(
fv!item['recordType!PMSO Speaker Event.fields.speakerId']
),
readOnly: true
),
a!textField(
label: "Languages",
labelPosition: "COLLAPSED",
value: rule!PMSO_getSpkrLanguageNamesForSpeakerId(
fv!item['recordType!PMSO Speaker Event.fields.speakerId']
),
readOnly: true
),
a!textField(
label: "Accommodations",
labelPosition: "COLLAPSED",
value: if(
rule!PMSO_getSpkrAccommodationsForSpeakerId(
fv!item['recordType!PMSO Speaker Event.fields.speakerId']
),
"Yes",
"No"
),
readOnly: true
)
}
)
)
},
selectionValue: local!selectedSpeakerEventIndex,
selectionSaveInto: local!selectedSpeakerEventIndex,
selectable: true,
selectionStyle: "ROW_HIGHLIGHT",
selectionRequired: true,
shadeAlternateRows: true
)
It seems that I can only use fv!index as the id in the gridRowLayout function. Is this a bug?!?
If I use fv!identifier, all of the records in the grid are "selected" when the grid is displayed even though they are not selected.

I tried to use the fv!item.speakerEventId, it throws an HTML 500 error. This is the tomcat-stdOut.log
2025-04-21 07:00:44,225 [RecordSyncScheduler_Worker-2] ERROR com.appiancorp.record.data.recordloaders.ads.RecordTypeAdsLoadService - Error creating join index for relationship with uuid:
com.appian.data.client.AdsUserInputException: APNX-3-1000-06D: Invalid parameter specified to the createJoinIndex function. Attrs must reference valid attributes. Invalid attr ref(s): []
I got around the problem by using the index as the id and adding a save into the saveinto function of the submit button.
a!save(ri!selectedSpeakerEvent, index(local!speakerEvents, local!selectedSpeakerEventIndex))

