What is the best way to populate a dropdown ?

I need the managers list while adding an employee . i have an employee and manager table . 

while creating an employee , i need to populate managers list so that HR can assign the manager to an employee . in the interface i need to populate the Manager dropdown .

 

Option 1 

 

--Create a query entity to fetch all the managers 

--get the data subset 

-- initialize local!managers:rule!getManagers()

and display like below  

a!dropdownField(
label: "Manager",
labelPosition: "ADJACENT",
placeholderLabel: "--- Select a Manager ---",
choiceLabels:{index(local!managers.data,"name")},
choiceValues:{index(local!managers.data,"name")},
value: ri!manager.name,
saveInto: ri!manager.id,
validations: {}
)

 

are there any better approach ?

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer

    Your snippet should look more like

     

    a!dropdownField(
        label: "Manager",
        labelPosition: "ADJACENT",
        placeholderLabel: "--- Select a Manager ---",
        choiceLabels:{index(local!managers.data, "name", {})},
        choiceValues:{index(local!managers.data, "id", {})},
        value: index(ri!manager, "id", null),
        saveInto: ri!manager.id,
        validations: {}
    )

     

    If your query doesn't take too much time, loading the managers in a load() variable on the interface will be fine. However, this load variable will re-evaluate whenever the user opens up the interface, so if you anticipate both the user frequently leaving/coming back to the form AND the query is slow, I would store the data in process and pass the list in as a rule input.

Reply
  • 0
    Certified Lead Developer

    Your snippet should look more like

     

    a!dropdownField(
        label: "Manager",
        labelPosition: "ADJACENT",
        placeholderLabel: "--- Select a Manager ---",
        choiceLabels:{index(local!managers.data, "name", {})},
        choiceValues:{index(local!managers.data, "id", {})},
        value: index(ri!manager, "id", null),
        saveInto: ri!manager.id,
        validations: {}
    )

     

    If your query doesn't take too much time, loading the managers in a load() variable on the interface will be fine. However, this load variable will re-evaluate whenever the user opens up the interface, so if you anticipate both the user frequently leaving/coming back to the form AND the query is slow, I would store the data in process and pass the list in as a rule input.

Children