Saving editable grid

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

Parents
  • 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 

  • 0
    Certified Lead Developer
    in reply to Shwapx

    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

Reply Children
  • 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
      )
    )