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
  • 0
    Certified Lead Developer

    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",
                                      saveInto: {
                                        a!save(
                                          target: ri!AOS_PhysChemDetails['recordType!{45e1c911-2882-4182-a967-cf53ca64dedd}AOS_Phys_Chem_Details.fields.{ccaef7c1-7157-4e57-a526-485f924be718}value'],
                                          value: ri!AOS_PhysChemDetails['recordType!{45e1c911-2882-4182-a967-cf53ca64dedd}AOS_Phys_Chem_Details.fields.{ccaef7c1-7157-4e57-a526-485f924be718}value'],
                                        ),
                                        a!save(
                                          target: ri!AOS_PhysChemDetails['recordType!{45e1c911-2882-4182-a967-cf53ca64dedd}AOS_Phys_Chem_Details.fields.{fd570ddd-2f11-477c-8de1-852a31e5c186}property'],
                                          value: "Melting Point"
                                        )
                                      }
                                    ),  
                                    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 AOS_Phys_Chem_Details

  • 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

  • 0
    Certified Associate Developer
    in reply to Shwapx
    Is Rule Input 'ri!AOS_PhysChemDetails' defined as Array (i.e. except multiple values)? 
    I feel that you defined ri!AOS_PhysChemDetails as an array and trying to set the value directly without selecting a particular row. Due to this, you are getting an error 'Cannot index null List of AOS_Phys_Chem_Details'.
  • Yes is set as an array, since I need to save multiple rows in the same ri!AOS_PhysChemDetails

    There are around 15 rows that need to be saved.

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

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

Children