Dual Picklist with Editable Grid Error

Certified Senior Developer

As per my Requirement I need to use the Dual Picklist with Editable Grid in Interface instead with Dual Picklist with Checkbox Design Pattern.

So the issue here is

1.Currently i am having the 4 items in the available list

2. When i am selecting 1 & 4 the local variables is taking the respective data related to 1 & 4 and after clicking on the ADD SELECTED it moved to the Selected List local variable

3.Remaining items available 2 & 3 when i am selecting them it should consider as 2 &3 but instead it was consider as new iteration as 1 & 2

Now the issue here is when i am selecting 1,4 those needs to be added to selected list and after submitting these when i select 2,3 the items needs to consider as 2,3 instead of 1,2 and all needs to be append and display the data

Code:

a!localVariables(
local!availableDataIndex,
local!selectedDataIndex,
local!availableList: rule!example().data, (record type)
local!selectedList,
{
a!sectionLayout(
contents: {
a!columnsLayout(
columns: {
a!columnLayout(
contents: {
a!cardLayout(
contents: {
a!gridLayout(
headerCells: { "" },
rows: a!forEach(
local!availableList,
a!gridRowLayout(
id: fv!index,
contents: {
a!textField(
value: fv!item['recordType!{63a0b9c7-fe03-4c99-8667-a1d9a63acf3f}DIL Users.fields.{e171b194-fd76-4716-b949-b321110771ea}userName'],
readOnly: true()
)
}
)
),
selectable: true(),
selectionStyle: "ROW_HIGHLIGHT",
selectionValue: local!availableDataIndex,
selectionSaveInto:local!availableDataIndex,
validations: {}
),
},
height: "MEDIUM_PLUS",
marginBelow: "STANDARD"
)
},
width: "MEDIUM"
),
a!columnLayout(
contents: {
a!buttonArrayLayout(
buttons: {
a!buttonWidget(
label: "Add Selected",
icon: if(
a!isPageWidth("PHONE"),
"chevron-down",
"chevron-right"
),
saveInto: {
/* Add chosen available items to selected list */
a!save(
local!selectedList,
append(
local!selectedList,
index(
local!availableList,
wherecontains(
local!availableDataIndex,
local!availableList['recordType!{63a0b9c7-fe03-4c99-8667-a1d9a63acf3f}example.fields.{27db380a-2a73-451f-9a40-96a5c543624b}id']

),
{}
)
),
),
/* Remove from available list */
a!save(
local!availableList,
remove(
local!availableList,
wherecontains(
local!availableDataIndex,
local!availableList['recordType!{63a0b9c7-fe03-4c99-8667-a1d9a63acf3f}example.fields.{27db380a-2a73-451f-9a40-96a5c543624b}id']


)
)
),
/* Clear out choices */
a!save(local!availableDataIndex, null)
},
width: "FILL",
style: "SECONDARY",
disabled: or(
a!isNullOrEmpty(local!availableDataIndex),
count(local!availableList)=0
)
),
a!buttonWidget(
label: "Add All",
icon: "plus",
saveInto: {
/* Add all available items to selected list */
a!save(local!selectedList,append(local!selectedList,
local!availableList)),
/* Clear available list */
a!save(local!availableList, {}),
/* Clear out choices */
a!save(local!availableDataIndex, null)
},
width: "FILL",
style: "SECONDARY",
disabled: count(local!availableList)=0

)
},
align: "START",
marginBelow: "EVEN_MORE"
),
a!buttonArrayLayout(
buttons: {
a!buttonWidget(
label: "Remove Selected",
icon: if(
a!isPageWidth("PHONE"),
"chevron-up",
"chevron-left"
),
saveInto: {
/* Add chosen selected items to available list */
a!save(
local!availableList,
append(
local!availableList,
index(
local!selectedList,
wherecontains(
local!selectedDataIndex,
local!selectedList['recordType!{63a0b9c7-fe03-4c99-8667-a1d9a63acf3f}example.fields.{27db380a-2a73-451f-9a40-96a5c543624b}id']
),
{}DIL 
)
),
),
/* Remove from selected list */
a!save(
local!selectedList,
remove(
local!selectedList,
wherecontains(
local!selectedDataIndex,
local!selectedList['recordType!{63a0b9c7-fe03-4c99-8667-a1d9a63acf3f}example.fields.{27db380a-2a73-451f-9a40-96a5c543624b}id']
)
)
),
/* Clear out choices */
a!save(local!selectedDataIndex, null)
},
width: "FILL",
style: "SECONDARY",
disabled: or(
a!isNullOrEmpty(local!selectedDataIndex),
length(local!selectedList)=0
)
),
a!buttonWidget(
label: "Remove All",
icon: "times",
saveInto: {
/* Add all selected items to available list */
a!save(local!availableList,append(local!availableList,
local!selectedList)),
/* Clear selected list */
a!save(local!selectedList, {}),
/* Clear out choices */
a!save(local!selectedDataIndex, null)
},
width: "FILL",
style: "SECONDARY",
disabled: count(local!selectedList)=0
)
},
align: "START"
)
},
width: "NARROW"
),
a!columnLayout(
contents: {
a!cardLayout(
contents: {

a!gridLayout(
headerCells: { "" },
rows: a!forEach(
local!selectedList,
a!gridRowLayout(
id: fv!index,
contents: {
a!textField(
value: fv!item['recordType!{63a0b9c7-fe03-4c99-8667-a1d9a63acf3f}example.fields.{e171b194-fd76-4716-b949-b321110771ea}userName'],
readOnly: true()
)
}
)
),
selectable: true(),
selectionStyle: "ROW_HIGHLIGHT",
selectionValue: local!selectedDataIndex,
selectionSaveInto:a!save(local!selectedDataIndex,save!value),
emptyGridMessage: " ",
validations: {}
),

},
height: "MEDIUM_PLUS",
marginBelow: "STANDARD"
)
},
width: "MEDIUM"
),
a!columnLayout(contents: {})
},
alignVertical: "MIDDLE"
)
}
)
}
)

  Discussion posts and replies are publicly visible

Parents Reply
  • 0
    Certified Lead Developer
    in reply to ashwinir5622

    In your code, you define the ID of your grid rows like this:

    a!gridRowLayout(
      id: fv!index,

    fv!index is just the number of the item in the list. When you select items, Appian stores that value. Then to move the selected items, you need exactly this values.

    Change the code for the "Add selected" button like this:

    ### OLD ###
    a!save(
      local!selectedList,
      append(
        local!selectedList,
        index(
          local!availableList,
          wherecontains(
            local!availableDataIndex,
            local!availableList['recordType!{63a0b9c7-fe03-4c99-8667-a1d9a63acf3f}example.fields.{27db380a-2a73-451f-9a40-96a5c543624b}id']
          ),
        {}
        )
      ),
    ),
    
    ### NEW ###
    a!save(
      local!selectedList,
      append(
        local!selectedList,
        index(
          local!availableList,
          local!selectedDataIndex,
          {}
        )
      ),
    ),
    

Children