=a!gridRowLayout( id: ri!index, contents: { a!dropdownField( label: "project " & ri!index, choiceLabels: {"Creating a new interface", "Marketing the new product"}, placeholderLabel: "--Select-- ", choiceValues: {"Creating a new interface", "Marketing the new product"}, value: if(rule!APN_isEmpty(ri!hours),null,if(rule!APN_isEmpty(ri!hours[ri!index]),null,ri!hours[ri!index].project)), saveInto: ri!hours[ri!index].project ), a!dropdownField( label: "role " & ri!index, choiceLabels: {"Developer", "Debugger"}, placeholderLabel: "--Select-- ", choiceValues: {"Developer", "Debugger"}, value: if(rule!APN_isEmpty(ri!hours),null,if(rule!APN_isEmpty(ri!hours[ri!index]),null,ri!hours[ri!index].role)), saveInto: ri!hours[ri!index].role ), a!dateField( label: "on " & ri!index, value:ri!hours[ri!index].date, saveInto: ri!hours[ri!index].date, validations: {if(rule!APN_isEmpty(ri!hours),null,if(rule!APN_isEmpty(ri!hours[ri!index]),null,if(rule!APN_isBlank(ri!hours[ri!index].date),null,if(todate(ri!hours[ri!index].date) > today(), "The due date cannot be in the future", null))))}, align: "RIGHT" ), a!integerField( label: "hours " & ri!index, value: ri!hours[ri!index].hours, saveInto: ri!hours[ri!index].hours, validations: null, align: "RIGHT" ), a!textField( label: "user " & ri!index, value: "Hello", saveInto: ri!hours[ri!index].user, /*readOnly: true,*/ align: "RIGHT" ), a!linkField( label: "delete " & ri!index, links: a!dynamicLink( label: char(10005), value: ri!index, saveInto: { a!save(ri!hours, remove(ri!hours, 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!hoursToken, remove(ri!hoursToken, save!value)) }, align: "CENTER" ) ) } )