=load( local!buttonSelected, local!selectedEmployeeId, local!employeeData: { {id: "john.smith", first: "John", last: "Smith", email: "john.smith@example.com"}, {id: "michael.johnson", first: "Michael", last: "Johnson", email: "michael.johnson@example.com"}, {id: "elizabeth.ward", first: "Elizabeth", last: "Ward", email: "elizabeth.ward@example.com"} }, local!gridSelection: a!gridSelection( pagingInfo: a!pagingInfo( startIndex: 1, batchSize: 25, sort: a!sortInfo( field: "last", ascending: true ) ) ), with( /* Replace the value of local!datasubset with a!queryEntity(), or / / queryrecord(), or use your own CDT array in todatasubset() */ local!datasubset: todatasubset(local!employeeData, local!gridSelection.pagingInfo), a!formLayout( label: "SAIL Example: Limit Grid Selection to One Row", firstColumnContents:{ a!gridField( label: "Employees", totalCount: local!datasubset.totalCount, columns: { a!gridTextColumn(label: "First", field: "first", data: index(local!datasubset.data, "first", {})), a!gridTextColumn(label: "Last", field: "last", data: index(local!datasubset.data, "last", {})), a!gridTextColumn(label: "Email", field: "email", data: index(local!datasubset.data, "email", {})) }, identifiers: index(local!datasubset.data, "id", {}), value: local!gridSelection, saveInto: { local!gridSelection, a!save(local!selectedEmployeeId, index(save!value, "selected", null)) }, selection: true ), a!textField( readOnly: true, value: "Button: "&local!buttonSelected&" Selected: "&local!selectedEmployeeId ) }, validations: if(and(count(local!selectedEmployeeId)>1,local!buttonSelected="Submit"), a!validationMessage(message:"Please do not select more than one"),{} ), buttons: a!buttonLayout( primaryButtons: a!buttonWidgetSubmit( label: "Submit", value: "Submit", saveInto: local!buttonSelected ) ) ) ) )