Preserve the selected grid value when a row is double-clicked.

I'm trying to simulate a double-click-like behavior in a read-only grid using a!gridField_24r3. The goal is to return a selected row's value when a user clicks on a field grid value twice.

I am able to save the value of the grid after selecting it for the very first time by using fv!deselectedRows. Refer below code:

a!save(
                local!previousSelectedRow,
                if(
                  length(local!currentSelectedRow) = 0,
                  index(fv!deselectedRows, 1, null),
                  local!previousSelectedRow
                )
              )

Now within the parameter "selectionvalue" of a!gridField_24r3, I am trying to manipulate the value it holds with below logic where I put a condition if there is no selection made --> ri!selected will be empty but we have a value store within local!previousSelectedrow then we should get the id of that grid returned.

if(
  a!isNotNullOrEmpty(ri!selected),
  ri!selected, 
  if(
    a!isNotNullOrEmpty(tointeger(property(local!previousSelectedRow, "id", null))),
    property(local!previousSelectedRow, "id", null),
    null
  )
)

But selectionvalue is not getting updated. Its only holding the values on selection. Could anyone guide me here.

  Discussion posts and replies are publicly visible

Parents
  • +1
    Certified Lead Developer

    SelectionValue is read-only - it only displays the current selection state. You can't use it to force selections. When a user deselects, Appian clears the selection internally and your conditional logic in selectionValue won't override this.

    Use selectionSaveInto to detect the double-click pattern:

    selectionSaveInto: {
      a!save(ri!selected, save!value),
      if(
        and(
          length(save!value) = 0,  /* Deselected */
          length(fv!deselectedRows) = 1,  /* Single row deselected */
          fv!deselectedRows[1] = local!lastSelectedRow  /* Same row */
        ),
        /* Trigger double-click action */
        a!save(local!doubleClickedRow, fv!deselectedRows[1]),
        a!save(local!lastSelectedRow, fv!selectedRows[1])
      )
    }

Reply
  • +1
    Certified Lead Developer

    SelectionValue is read-only - it only displays the current selection state. You can't use it to force selections. When a user deselects, Appian clears the selection internally and your conditional logic in selectionValue won't override this.

    Use selectionSaveInto to detect the double-click pattern:

    selectionSaveInto: {
      a!save(ri!selected, save!value),
      if(
        and(
          length(save!value) = 0,  /* Deselected */
          length(fv!deselectedRows) = 1,  /* Single row deselected */
          fv!deselectedRows[1] = local!lastSelectedRow  /* Same row */
        ),
        /* Trigger double-click action */
        a!save(local!doubleClickedRow, fv!deselectedRows[1]),
        a!save(local!lastSelectedRow, fv!selectedRows[1])
      )
    }

Children