Hello Team,
I have build an editable grind and now I want to save the values inside my records. I have record table and rule input in my interface the problem is how I can save this data for each request I have. The data is a sample there are around 15 rows which I want the user to be able to save some of them can be null some of them can be filled out. Basically the property is read only, once user enter value we can use a!save to save the property for the respective row, but I always get cannot index rule input records..
rows: { a!gridRowLayout( contents: { a!richTextDisplayField( labelPosition: "COLLAPSED", value: { a!richTextItem( text: {"Melting Point"} ) } ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", disabled: false, validations: {} ), a!dropdownField( choiceLabels: {"g/cm3", "kg/m3"}, choiceValues: {"g/cm3", "kg/m3"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "Select", saveInto: {}, searchDisplay: "AUTO", validations: {} ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", validations: {} ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", validations: {} ), a!dropdownField( choiceLabels: {"℃", "℉"}, choiceValues: {"℃", "℉"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "Select", saveInto: {}, searchDisplay: "AUTO", validations: {} ), a!dropdownField( choiceLabels: {"Property has not been measured"}, choiceValues: {"Property has not been measured"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "--- Select a Value ---", saveInto: {}, searchDisplay: "AUTO", validations: {} ) }, showWhen: if( or( ri!AOS_PhysChem['recordType!{1ddc2dbc-133e-49a3-a416-3e896db0beb4}AOS_Phys_chem.fields.{6862862b-7cbf-4b5d-be70-7944f6a23f5b}PhysicalState'] = "LIquid", ri!AOS_PhysChem['recordType!{1ddc2dbc-133e-49a3-a416-3e896db0beb4}AOS_Phys_chem.fields.{6862862b-7cbf-4b5d-be70-7944f6a23f5b}PhysicalState'] = "Solid", ri!AOS_PhysChem['recordType!{1ddc2dbc-133e-49a3-a416-3e896db0beb4}AOS_Phys_chem.fields.{6862862b-7cbf-4b5d-be70-7944f6a23f5b}PhysicalState'] = "" ), true, false) ), a!gridRowLayout( contents: { a!richTextDisplayField( labelPosition: "COLLAPSED", value: { a!richTextItem( text: {"Freezing Point"} ) } ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", disabled: false, validations: {} ), a!dropdownField( choiceLabels: {"g/cm3", "kg/m3"}, choiceValues: {"g/cm3", "kg/m3"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "Select", saveInto: {}, searchDisplay: "AUTO", validations: {} ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", validations: {} ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", validations: {} ), a!dropdownField( choiceLabels: {"℃", "℉"}, choiceValues: {"℃", "℉"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "Select", saveInto: {}, searchDisplay: "AUTO", validations: {} ), a!dropdownField( choiceLabels: {"Property has not been measured"}, choiceValues: {"Property has not been measured"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "--- Select a Value ---", saveInto: {}, searchDisplay: "AUTO", validations: {} ) }, showWhen: if( or( ri!AOS_PhysChem['recordType!{1ddc2dbc-133e-49a3-a416-3e896db0beb4}AOS_Phys_chem.fields.{6862862b-7cbf-4b5d-be70-7944f6a23f5b}PhysicalState'] = "LIquid", ri!AOS_PhysChem['recordType!{1ddc2dbc-133e-49a3-a416-3e896db0beb4}AOS_Phys_chem.fields.{6862862b-7cbf-4b5d-be70-7944f6a23f5b}PhysicalState'] = "Solid", ri!AOS_PhysChem['recordType!{1ddc2dbc-133e-49a3-a416-3e896db0beb4}AOS_Phys_chem.fields.{6862862b-7cbf-4b5d-be70-7944f6a23f5b}PhysicalState'] = "" ), true, false) ), a!gridRowLayout( contents: { a!richTextDisplayField( labelPosition: "COLLAPSED", value: { a!richTextItem( text: {"Boiling Point"} ) } ),
Discussion posts and replies are publicly visible
Can you share details about the error reveived?
a!gridLayout( label: "", labelPosition: "ABOVE", headerCells: { a!gridLayoutHeaderCell(label: "Properties", align: "LEFT"), a!gridLayoutHeaderCell(label: "Value"), a!gridLayoutHeaderCell(label: "Unit"), a!gridLayoutHeaderCell(label: "Concentration"), a!gridLayoutHeaderCell(label: "Temperature"), a!gridLayoutHeaderCell(label: "Temperature Unit"), a!gridLayoutHeaderCell( label: "Explanation for Absence of data", helpTooltip: "Explanation for Absence of data is required if value is not provided" ) }, columnConfigs: { a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3), a!gridLayoutColumnConfig(width: "DISTRIBUTE", weight: 3) }, rows: { a!gridRowLayout( contents: { a!richTextDisplayField( labelPosition: "COLLAPSED", value: { a!richTextItem( text: {"Melting Point"} ) } ), a!textField( label: "Text", labelPosition: "ABOVE", a!dropdownField( choiceLabels: {"g/cm3", "kg/m3"}, choiceValues: {"g/cm3", "kg/m3"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "Select", saveInto: {}, searchDisplay: "AUTO", validations: {} ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", validations: {} ), a!textField( label: "Text", labelPosition: "ABOVE", saveInto: {}, refreshAfter: "UNFOCUS", validations: {} ), a!dropdownField( choiceLabels: {"℃", "℉"}, choiceValues: {"℃", "℉"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "Select", saveInto: {}, searchDisplay: "AUTO", validations: {} ), a!dropdownField( choiceLabels: {"Property has not been measured"}, choiceValues: {"Property has not been measured"}, label: "Dropdown", labelPosition: "ABOVE", placeholder: "--- Select a Value ---", saveInto: {}, searchDisplay: "AUTO", validations: {}
Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error [evaluation ID = 005f7:92346] : An error occurred while executing a save: Expression evaluation error: Cannot index null List of
I see only a single row in that code snippet. Is that by intention? If not, I suggest to try one of the examples from the documentation
https://docs.appian.com/suite/help/24.2/Editable_Grid_Component.html#examples
Yes I need to save multiple rows around 15.
This might work, but how do I save the values in rule input? Since with this I can initialize the property in the localvariable. and save the data for each row in new row.
a!localVariables( local!items: { {item: "Item 1", qty: 1, unitPrice: 10}, {item: "Item 2", qty: 2, unitPrice: 20} }, a!gridLayout( label: "Products", instructions: "Update the item name, quantity, or unit price.", headerCells: { a!gridLayoutHeaderCell(label: "Item"), a!gridLayoutHeaderCell(label: "Qty"), a!gridLayoutHeaderCell(label: "Unit Price"), a!gridLayoutHeaderCell(label: "Total", align: "RIGHT") }, rows: { a!gridRowLayout( contents: { a!textField( value: local!items[1].item, saveInto: local!items[1].item ), a!integerField( value: local!items[1].qty, saveInto: local!items[1].qty ), a!floatingPointField( value: local!items[1].unitPrice, saveInto: local!items[1].unitPrice ), a!textField( value: a!currency( isoCode: "USD", value: tointeger(local!items[1].qty) * todecimal(local!items[1].unitPrice) ), readOnly: true, align: "RIGHT" ) } ), a!gridRowLayout( contents: { a!textField( value: local!items[2].item, saveInto: local!items[2].item ), a!integerField( value: local!items[2].qty, saveInto: local!items[2].qty ), a!floatingPointField( value: local!items[2].unitPrice, saveInto: local!items[2].unitPrice ), a!textField( value: a!currency( isoCode: "USD", value: tointeger(local!items[2].qty) * todecimal(local!items[2].unitPrice) ), readOnly: true, align: "RIGHT" ) } ) }, rowHeader: 1 ) )
This is a good started: https://docs.appian.com/suite/help/24.2/Adapt_a_SAIL_Recipe_to_Work_with_My_Applications.html