Howdy All,
I'm new to Appian and struggling with how to configure the Editable Grid for a form response.
Particularly trying to troubleshoot the "Add New Row" feature within the Editable Grid.
Any advice or guidance on how to adjust this would be appreciated!
/* Editable Grid */ a!sectionLayout( label: "", contents: { a!gridLayout( label: "Please Complete below if there is no quote attached.", labelPosition: "ABOVE", headerCells: { /* 1 */ a!gridLayoutHeaderCell(label: "Action"), /* 2 */ a!gridLayoutHeaderCell(label: "Item Number"), /* 3 */ a!gridLayoutHeaderCell(label: "Item Description", align: "LEFT"), /* 4 */ a!gridLayoutHeaderCell(label: "Part Number", align: "LEFT"), /* 5 */ a!gridLayoutHeaderCell(label: "URL Link"), /* 6 */ a!gridLayoutHeaderCell(label: "Lead Time (Days)"), /* 7 */ a!gridLayoutHeaderCell(label: "Qty"), /* 8 */ a!gridLayoutHeaderCell(label: "Cost Per Unit"), /* 9 */ a!gridLayoutHeaderCell(label: "Total Cost"), /*10 */ a!gridLayoutHeaderCell(label: "") }, columnConfigs: { /* 1 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE"), /* Action */ /* 2 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2), /* Item Number */ /* 3 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), /* Item Description */ /* 4 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2), /* Part Number */ /* 5 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 2), /* URL Link */ /* 6 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE"), /* Lead Time (Days) */ /* 7 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 1), /* Qty */ /* 8 */ a!gridLayoutColumnConfig(width: "DISTRIBUTE"), /* Cost Per Unit */ /* 9 */ a!gridLayoutColumnConfig(width: "NARROW"), /* Total Cost */ /*10 */ a!gridLayoutColumnConfig(width: "NARROW") /* [Delete Row Column] */ }, rows: { a!forEach( items: ri!Item, expression: a!gridRowLayout( contents: { a!textField( placeholder: "", value: ri!Item.action, saveInto: ri!Item.action, required: false, validationGroup: "main" ), a!textField( placeholder: "", value: fv!item.itemnumber[fv!index], saveInto: fv!item.itemnumber[fv!index], required: false, validationGroup: "main" ), a!textField( placeholder: "", value: fv!item.itemdesc[fv!index], saveInto: fv!item.itemdesc[fv!index], characterLimit: 100, required: false, validationGroup: "main" ), a!textField( placeholder: "", value: fv!item.partnumber[fv!index], saveInto: fv!item.partnumber[fv!index], required: false, validationGroup: "main" ), a!textField( placeholder: "", value: fv!item.urllink[fv!index], saveInto: fv!item.urllink[fv!index], required: false, validationGroup: "main" ), a!textField( placeholder: "", value: fv!item.leadtime[fv!index], saveInto: fv!item.leadtime[fv!index], required: false, validationGroup: "main" ), a!textField( placeholder: "", value: fv!item.quantity[fv!index], saveInto: fv!item.quantity[fv!index], required: false, validations: { if(fv!item.quantity[fv!index] < 1, "Quantity must be greater than zero", "") }, validationGroup: "main", align: "RIGHT" ), a!floatingPointField( placeholder: "", value: fv!item.unitPrice[fv!index], saveInto: fv!item.unitPrice[fv!index], required: false, validations: { if(fv!item.unitPrice[fv!index] < 0, "Price must be greater than zero", "") }, validationGroup: "main", align: "RIGHT" ), a!textField( value: a!currency(isoCode: "USD", value: fv!item.totalc[fv!index]), readOnly: true, align: "RIGHT" ), a!richTextDisplayField( value: { a!richTextIcon( icon: "times", link: a!dynamicLink( saveInto: a!save(ri!Item, remove(ri!Item, fv!index)) ), linkStyle: "STANDALONE", color: "NEGATIVE" ) } ) } ) ), /* Editable Grid */ a!gridRowLayout( contents: { /* 1 */ a!textField( label: "Action", saveInto: ri!Item['recordType!{18032ed7-381c-4379-b76b-3ef592acf874}KXTItem.fields.{48a1083c-302c-4de1-a61d-245483e72a7d}action'],readOnly: true), /* Action */ /* 2 */ a!textField( label: "Item Number", saveInto: ri!Item['recordType!{18032ed7-381c-4379-b76b-3ef592acf874}KXTItem.fields.{956062b4-7dc1-480c-903d-41f0a0e16f2a}itemnumber'],readOnly: true), /* Item Number */ /* 3 */ a!textField( label: "Item Description", saveInto: ri!Item['recordType!{18032ed7-381c-4379-b76b-3ef592acf874}KXTItem.fields.{93159d1a-808d-4010-a9de-3ea3e20a2a16}itemdesc'],readOnly: true), /* Item Description */ /* 5 */ a!textField(readOnly: true), /* Part Number */ /* 6 */ a!textField(readOnly: true), /* URL Link */ /* 7 */ a!textField(readOnly: true), /* Lead Time (Days) */ /* 8 */ a!textField(readOnly: true), /* Qty */ /* 9 */ a!textField(value: "Total", readOnly: true, align: "RIGHT"), /* Total Cost */ /* 10 */ a!textField( value: a!currency(isoCode: "USD", value: sum(a!forEach( items: "", expression: fv!item.qty * fv!item.unitPrice )), format: "SYMBOL"), readOnly: true, align: "RIGHT" ), /* */ a!textField(readOnly: true) } ) }, addRowLink: a!dynamicLink( label: "Add New Item", saveInto: { a!save(ri!Item, append(ri!Item, a!map(action: "",itemnumber: "",itemdesc: "",partnum: " ",urllink: " ", leadtime: "",qty: tointeger(null),unitPrice: todecimal(null), totalc: ""))) } ), rowHeader: 1 )
Discussion posts and replies are publicly visible
Hello KevinQP,Could you please insert your could in this way that would improve the readability. besides have you taken a look at this? looks like you have a duplicate grid row layout in your foreach and you can use your ri!item type for your save instead of map.Add, Edit, and Remove Data in an Inline Editable Grid
This will be much more readable if you provide a cleanly pasted code box with indentaion in-tact.
(edit: sorry, Konduru beat me to it while i was still typing. leaving my comment here tho lol)
Hello Konduru, fixed just now and also yes I have read that particular set of documentation, but I'm struggling to accurately identify which part is broken. Could it just be that I need to add the index function variable to the "id"?
KevinQP said:fixed just
not to be too nitpicky but i would suggest you revise one more time and paste in your original code with indentation in-tact; that's one of the things a Code Box most enhances about readability here. Also (personal preference) I select "Java" from the syntax highlighting drop-down; in the absence of a "SAIL" or "Appian Expression" option there, it at least adds some visual distinction to pasted Appian code.
You don't need to put fv!index in your value and save into as such
fv!item.unitPrice[fv!index]
remove the second grid row layout. Try saving a null or a recordType value.a!save(ri!Item, append(ri!Item, recordType!value())
Not a problem! Beat me to it while I was editing haha, thank you for the support
Took some time for me also. Just few seconds of difference. How to do this type of screen capture anyway always wondered.
When I attempt this, this is the error I get.
Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error [evaluation ID = 0LQYE] : An error occurred while executing a save: Could not cast from List of Null to KXTItem. Details: CastInvalid
I use a freeware tool called GreenShot. You can map it to the PrintScreen button (or any other available hotkey) and it gives you a screen-area selection tool, then opens that selection in a mini editor where you get options like arrows, highlight, obfuscation, and borders.
Konduru Chaitanya said:How to do this type of screen capture anyway always wondered.
Thank you!