RULE: whichIdentifier if( isnull(ri!id1), ri!id2, ri!id1 ) RULE: main interface load( local!gridSelection: a!gridSelection( pagingInfo: a!pagingInfo( startIndex: 1, batchSize: -1 ) ), local!dataSubset: todatasubset( { {id1: null, id2: "zzz1", value: "test 1"}, {id1: null, id2: "zzz2", value: "test 2"}, {id1: "abc3", id2: null, value: "test 3"}, {id1: null, id2: "zzz4", value: "test 4"}, {id1: "abc5", id2: null, value: "test 5"} }, local!gridSelection.pagingInfo ), a!formLayout( label: "Grid identifier test", firstColumnContents: { a!gridField( columns: { a!gridTextColumn( label: "ID 1", field: "id1", data: index(local!dataSubset.data,"id1",{}) ), a!gridTextColumn( label: "ID 2", field: "id2", data: index(local!dataSubset.data,"id2",{}) ), a!gridTextColumn( label: "Value", field: "value", data: index(local!dataSubset.data,"value",{}) ) }, totalCount: local!dataSubset.totalCount, value: local!gridSelection, saveinto: local!gridSelection, identifiers: apply( rule!whichIdentifier, merge( index(local!dataSubset.data,"id1",{}), index(local!dataSubset.data,"id2",{}) ) ), selection: true ), a!textField( label: "Selected", readOnly: true, value: local!gridSelection.selected ) } ) )