Hi,
I want to upload multiple files to each item in an editable grid. I am using a link to add documents outside of the grid. When I submit the form for adding documents, I want to associate the documents with relevant item. I am using rule inputs of request _tems and request_item_documents CDTs. Because the requestitemId is null, I am not able to fetch the documents for the relevant request item.
How do I resolve this? Thanks in advance.
a!localVariables( local!hardwareClassList: rule!AMF_QR_getHardwareClassifications(), local!currentUser: loggedInUser(), local!selectedId, { a!gridLayout( label: "", labelPosition: "ABOVE", headerCells: { a!gridLayoutHeaderCell(label: "PDM Number", align: "CENTER"), a!gridLayoutHeaderCell(label: "Serial Number", align: "CENTER"), a!gridLayoutHeaderCell( label: "Part Description", align: "CENTER" ), a!gridLayoutHeaderCell(label: "Revision", align: "CENTER"), a!gridLayoutHeaderCell(label: "HW Class", align: "CENTER"), a!gridLayoutHeaderCell(label: "Quantity", align: "CENTER"), a!gridLayoutHeaderCell(label: "Document(s)", align: "CENTER"), a!gridLayoutHeaderCell(label: "") }, columnConfigs: { a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2), a!gridLayoutColumnConfig(width: "NARROW", weight: null), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 1), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 1), a!gridLayoutColumnConfig(width: "ICON") }, rows: { a!forEach( items: ri!requestItems, expression: a!gridRowLayout( contents: { a!textField( value: fv!item.pdmNumber, saveInto: fv!item.pdmNumber, characterLimit: 64, showCharacterCount: false, ), a!textField( value: fv!item.serialNumber, saveInto: fv!item.serialNumber, characterLimit: 400, showCharacterCount: false, ), a!textField( value: fv!item.partDescription, saveInto: fv!item.partDescription, characterLimit: 255, showCharacterCount: false, ), a!textField( value: fv!item.revision, saveInto: fv!item.revision, characterLimit: 64, showCharacterCount: false, ), a!dropdownField( placeholder: "HW Class", choiceLabels: index( local!hardwareClassList, 'recordType!{3ec8fedc-5057-4343-8c39-cf34c46901cf}AMF Hardware Class.fields.{bc9287be-dd00-4682-9f35-6a706a8e1c5d}name' ), choiceValues: index( local!hardwareClassList, 'recordType!{3ec8fedc-5057-4343-8c39-cf34c46901cf}AMF Hardware Class.fields.{30f9e578-81cf-4a40-b567-9bf85020c4b9}hardwareClassId' ), value: fv!item.hardwareClassId, saveInto: fv!item.hardwareClassId, ), a!integerField( value: a!defaultValue(value: fv!item.quantity, default: 0), saveInto: fv!item.quantity, showWhen: if( a!isUserMemberOfGroup( local!currentUser, cons!AMF_GRP_VENDOR_USERS ), false, true ) ), a!linkField( links: { a!dynamicLink( label: "Upload Documents", value: fv!index, saveInto: local!selectedId ) } ), a!richTextDisplayField( value: a!richTextIcon( icon: "times", altText: "Remove" & fv!index, caption: "Remove ", link: a!dynamicLink( value: fv!index, saveInto: { a!save(fv!item.isActive, false()), a!save( ri!requestItems, remove(ri!requestItems, save!value) ) } ), linkStyle: "STANDALONE", color: "NEGATIVE" ) ) } ) ) }, addRowLink: a!dynamicLink( label: " Add Request Item", value: 'type!{urn:com:appian:types:AMF}AMF_Request_Item'( isActive: true(), createdOn: now(), createdBy: local!currentUser, ), saveInto: { a!save( ri!requestItems, append(ri!requestItems, save!value) ) } ), showWhen: isnull(local!selectedId), rowHeader: 1, ), a!localVariables( local!selectedItem: if( isnull(local!selectedId), {}, displayvalue( local!selectedId, ri!requestItems.requestItemId, ri!requestItems, {} ) ), local!documents: {}, { a!sectionLayout( label: "Documents for " & local!selectedItem.partDescription, contents: { rule!AMF_FRM_AddRequestItemDocuments(documents: local!documents), a!buttonArrayLayout( a!buttonWidget( label: "Submit", saveInto: { local!selectedId, a!save( ri!documents, append(ri!documents,local!documents) ), a!save(local!documents,{}) } ) ) }, showWhen: not(isnull(local!selectedId)) ), } ) } )
Discussion posts and replies are publicly visible
I think you should generate some random IDs for your request_item and then associate the documents with it. These ids can be as simple as grid row index and then when you write this data into the DB, right before it, set all the IDs to null and finally replace the IDs in the document CDT with the newly generated IDs
Hi Harshit,
You mean creating a map? Can you advice me how to do it? Thanks
Tell me what you did not understand and I'll help you there
How to generate some random IDs?