a!gridRowLayout( id: ri!index, contents: { a!textField( /* Labels are not visible in grid cells but are necessary to meet accessibility requirements `*/ label: "sampleText" & ri!index, value: ri!items[ri!index].sampleText /* ri!items[index] will become of CDT data type in this rule. the .sampleText will show and set values into that CDT element.*/, saveInto: ri!items[ri!index].sampleText, required: true ), a!integerField( label: "sampleInteger" & ri!index, value: ri!items[ri!index].sampleInteger, saveInto: ri!items[ri!index].sampleInteger, align: "RIGHT" ), a!dateField( label: "sampleDate" & ri!index, value: ri!items[ri!index].sampleDate, saveInto: ri!items[ri!index].sampleDate, align: "RIGHT" ), a!linkField( label: "delete " & ri!index, links: a!dynamicLink( label: char(10005), value: ri!index, saveInto: { 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)) }, align: "CENTER" ) ) } )