FunctionCopy link to clipboard
a!multipleDropdownField( label, instructions, required, disabled, placeholder, choiceLabels, choiceValues, value, validations, saveInto, validationGroup, requiredMessage, labelPosition, helpTooltip, accessibilityText, showWhen, searchDisplay, data, sort, marginAbove, marginBelow )
Displays a list of choices for the user to select multiple items and saves values based on the selected choices.
If users should only select one choice, use radio buttons or a dropdown component instead.
If there aren't many choices and users would benefit from easily seeing them all at once, consider using checkboxes.
ParametersCopy link to clipboard
Name | Keyword | Types | Description |
---|---|---|---|
Label |
|
Text |
Text to display as the field label. |
Instructions |
|
Text |
Supplemental text about this field. |
Required |
|
Boolean |
Determines if a value is required to submit the form. Default: false. |
Disabled |
|
Boolean |
Determines if the field should display as potentially editable but grayed out. Default: false. |
Placeholder |
|
Text |
Text to display in the field when it is empty. |
Choice Labels |
|
List of Variant |
Array of options for the user to select. When the data source is a record type, use a record type reference to specify a record field or related record field. To format a record field or display multiple record fields, use |
Choice Values |
|
List of Variant |
Array of values associated with the corresponding choices. When the data source is a record type, this is a record field (usually the primary key field). |
Selected Values |
|
List of Variant |
Values of choices to display as selected. |
Validations |
|
List of Text String |
Validation errors to display below the field when the value is not null. |
Save Selection To |
|
List of Save |
One or more variables that are updated with the choice values when the user changes the selections. Use |
Validation Group |
|
Text |
When present, the requiredness of the field is only evaluated when a button in the same validation group is pressed. The value for this parameter cannot contain spaces. For example, |
Required Message |
|
Text |
Custom message to display when the field's value is required and not provided. |
Label Position |
|
Text |
Determines where the label appears. Valid values:
|
Help Tooltip |
|
Text |
Displays a help icon with the specified text as a tooltip. The tooltip displays a maximum of 500 characters. The help icon does not show when the label position is |
Accessibility Text |
|
Text |
Additional text to be announced by screen readers. Used only for accessibility; produces no visible change. |
Visibility |
|
Boolean |
Determines whether the component is displayed on the interface. When set to false, the component is hidden and is not evaluated. Default: true. |
Search Display |
|
Text |
Determines when a search box displays above the options. Valid values: |
Data |
|
Any |
The record type used as the source of the component's choices. This can be specified with a record type reference or |
Sort |
|
List of SortInfo |
Array of Sort Info configurations created with a!sortInfo(). When the data source is a record type, you can use the value |
Margin Above |
|
Text |
Determines how much space is added above the component. Valid values: "NONE" (default), "EVEN_LESS", "LESS", "STANDARD" , "MORE", "EVEN_MORE". |
Margin Below |
|
Text |
Determines how much space is added below the component. Valid values: "NONE", "EVEN_LESS", "LESS", "STANDARD" (default), "MORE", "EVEN_MORE". |
Usage considerationsCopy link to clipboard
Using the choiceLabels and choiceValues parametersCopy link to clipboard
When configuring the Choice Labels and Choice Values parameters, keep the following in mind:
- The Choice Labels cannot be null.
- The Choice Values cannot contain nulls or duplicate values.
- The Choice Labels list and Choice Values list must be the same length.
When you select Record Type as the data source, the Choice Labels and Choice Values are automatically populated with record field references. By default, the labels will be the first text field from the record type, and the values will be the primary key field.
You can format and display multiple record fields in the Choice Labels parameter using fv!data
and a record field reference. For example, if you want to display a list of US cities with their states in parentheses, you could use the following expression:
1
choiceLabels: fv!data[recordType!Location.fields.city] & " (" & fv!data[recordType!Location.fields.state] & ")"
Copy
This would display choice labels as:
1
2
3
4
5
New York City (New York)
Los Angeles (California)
Chicago (Illinois)
Houston (Texas)
Phoenix (Arizona)
Copy
Note: You cannot reference related record fields with fv!data
in the Choice Labels parameter. Instead, you should create a component using the related record type as the source to display that data in the Choice Labels parameter.
Sort choicesCopy link to clipboard
The way you sort the choices depends on the source of the component. If no sort is applied, the labels will appear in the order they're provided.
When you select Record Type as the data source:
- The choice order is determined by the Sort parameter.
-
You can automatically sort by the values configured in the Choice Labels or Choice Values parameters by using
"choiceLabels"
or"choiceValues"
in the a!sortInfo() function.For example,
a!sortInfo(field: “choiceLabels”, ascending: true)
would automatically sort the choices by the values in the Choice Labels parameter.
When you select Other as the data source:
- The choices display in the order defined in the Choice Labels.
Selecting, saving, and clearing valuesCopy link to clipboard
- If a single item is selected, the system saves a single-item array.
- If no selection is made or the selection is cleared, the system saves a null value into the component's Save Selection To field.
- Users can always clear the value using the
x
icon on web or theClear
link on the mobile application.
When to use a multiple dropdownCopy link to clipboard
There are multiple selection components you can use to display options in an interface. As a best practice, you should use the multiple dropdown component if users need to be able to select none, one, or many of the options.
If there are a large set of options, consider using a picker component. The picker search runs server-side and the performance cost of loading options happens while the user is searching. This may lead to better performance than a dropdown if you have a large set of options.
If users only need to select a single option out of a small set of option, use a dropdown component.
If there aren't many options and users would benefit from easily seeing them all at once, consider using radio buttons.
Row limit for records-powered componentsCopy link to clipboard
Interface components that use a record type as the data source are known as records-powered components.
Records-powered components can display a maximum of 5,000 rows. As a best practice, you should not display all 5,000 rows in a component since it may impact performance.
ExamplesCopy link to clipboard
Multiple dropdown with choices from a record typeCopy link to clipboard
In this example, imagine you are building a form that lets users create an order. The Order record type has a one-to-many relationship with an Order Line record type. The product for each order line is represented by the itemId
field.
We'll use the multiple dropdown component so users can add one or more items to their order. The component's choices are retrieved from a Product record type. choiceLabels
uses the name
field and the corresponding choiceValues
are set using the record type's primary key field, id
.
1
2
3
4
5
6
7
8
a!multipleDropdownField(
data: recordType!RE Product,
choiceLabels: recordType!RE Product.fields.name,
choiceValues: recordType!RE Product.fields.id,
label: "Products",
value: local!products,
saveInto: local!products,
)
Copy
As the user selects products, the corresponding values are saved to the local!products
variable. When they are finished making selections, we can add their selections to the rule input that is passed to a process model. The user will click a button to submit the order, and we can use that interaction to finish constructing the rule input. In the button component's saveInto parameter, we'll use a!forEach() to iterate over the local!products
list and save each value as the itemId
of an Order Line.
1
2
3
4
5
6
7
8
9
10
11
12
13
a!buttonWidget(
label: "Submit order",
value: local!items,
saveInto: a!forEach(
local!products,
a!save(
ri!order[recordType!RE Order.relationships.orderLine][fv!index][recordType!RE Order Line.fields.itemId],
fv!item
)
),
style: "OUTLINE",
submit: true
)
Copy
Multiple dropdown with the first choice selected by default and search on autoCopy link to clipboard
Since the searchDisplay
parameter is set to AUTO
and the number of choiceValues
is less than 12, no search box will be displayed.
Use the interactive editor below to test out your code:
Since the searchDisplay
parameter is set to AUTO
and the number of choiceValues
is more than 11, a search box will be displayed.
Use the interactive editor below to test out your code:
Dropdown with no choice selected by default and search onCopy link to clipboard
Since the searchDisplay
parameter is set to ON
, even though the number of choiceValues
is less than 12, a search box will be displayed.
Use the interactive editor below to test out your code:
Feature compatibilityCopy link to clipboard
The table below lists this component's compatibility with various features in Appian.
Feature | Compatibility | Note |
---|---|---|
Portals | Compatible | |
Offline Mobile | Compatible | |
Sync-Time Custom Record Fields | Incompatible | |
Real-Time Custom Record Fields | Incompatible | Custom record fields that evaluate in real time must be configured using one or more Custom Field functions. |
Process Reports | Incompatible | Cannot be used to configure a process report. |
Process Events | Incompatible | Cannot be used to configure a process event node, such as a start event or timer event. |
Process Autoscaling | Compatible |
Old versionsCopy link to clipboard
There are older versions of this interface component. You can identify older versions by looking at the name to see if there is a version suffix. If you are using an old version, be sure to refer to the corresponding documentation from the list below.
Old Versions | Reason for Update |
---|---|
a!multipledropdownField_20r2 | Added an optional search box. |
To learn more about how Appian handles this kind of versioning, see the Function and Component Versions page.
Related PatternsCopy link to clipboard
The following patterns include usage of the Multiple Dropdown Component.
-
Offline Mobile Task Report (Grids, Filtering, Process Task Links, Task Reports, Looping): Display a task report for a user that will work in Appian Mobile, even when the user is offline.
-
Task Report Pattern (Grids, Filters, Process Task Links, Task Reports): Provides a simple way to create and display an Appian task report.