a!gridRowLayout( contents: { a!textField( /* Labels are not visible in grid cells but are necessary to meet accessibility requirements */ label: "first " & ri!index, value: ri!items[ri!index].first, saveInto: ri!items[ri!index].first, readonly: true ), a!textField( /* Labels are not visible in grid cells but are necessary to meet accessibility requirements */ label: "last " & ri!index, value: ri!items[ri!index].last, saveInto: ri!items[ri!index].last, readonly: true ), a!textField( /* Labels are not visible in grid cells but are necessary to meet accessibility requirements */ label: "email " & ri!index, value: ri!items[ri!index].email, saveInto: ri!items[ri!index].email, readonly: true ), a!linkField( label: "delete " & ri!index, links: a!dynamicLink( label: char(10005), value: ri!index, saveInto: { /* * Capture the deleted item's id before removing it from the ri!items array. * No need to filter out null ids from new items since the Delete from Data Store * Entities smart service ignores null identifiers.*/ a!save(ri!items, remove(ri!items, save!value)), /* * When modifying the size of the array used in a!applyComponents, * make the same change in the "token" array variable*/ a!save(ri!itemsToken, remove(ri!itemsToken, save!value)), a!save(ri!deletedEmployeeId, null), a!save(ri!gridSelection.selected,remove(ri!gridSelection.selected,save!value)) } ), align: "CENTER" ) }, id: ri!index )