- Overview
- App Events
- Flowchart Builder
- Release notes
- About the Flowchart Builder activities
- Project compatibility
- Callout
- Complex Scenarios
- Credentials
- Data Service
- About the Data Service activity package
- Project compatibility
- Create Entity Record (New)
- Update Entity Record (New)
- Delete Entity Record (New)
- Get Entity Record by Id (New)
- Query Entity Records (New)
- Upload File to Record Field (New)
- Download File from Record Field (New)
- Delete File from Record Field (New)
- Create Multiple Entity Records (New)
- Update Multiple Entity Records (New)
- Delete Multiple Entity Records (New)
- Form
- Release notes
- Project compatibility
- Real Time Forms
- Updating form data
- Running forms using JavaScript
- Customizing Forms Using CSS
- Conditional components
- Adding multiple components on the same row in Columns
- Using the Data Table component
- Get File/Folder path
- Reading cell values from a Data Grid component
- Displaying PDF files
- Displaying images in forms
- Scrolling through Data Grids
- Using Dev Tools with forms
- Calculate form component values
- Managing dates in forms
- Opening hyperlinks inside forms
- Displaying a default tab in forms
- Displaying the full label of a component
- Searching long strings in drop-down lists
- Dynamically set form values
- About the pre 23.4 Form experience
- Project Compatibility
- Real Time Forms
- Dynamic Checkboxes
- Conditional Dropdowns
- Displaying a Default Tab
- Displaying Images
- Displaying PDF Files
- Displaying the Full Label
- Dynamic HTML Elements
- Managing Dates
- Searching Long Strings in Drop-downs
- Customizing Forms Using Local CSS Files
- Executing Do Block On Checkbox Change
- Customizing Columns Width
- Updating Form Data
- Resetting Collection Data
- Advanced Logic
- Executing Do Block on Dropdown Option Change
- Reading Cell Values From a Data Grid Component
- Conditional Components
- Scrolling Through Data Grid Components
- Using the Grid Component
- Dev Tools
- Calculated Value
- Dynamic Dropdowns
- Switching Tabs With Button Click
- Opening Hyperlinks Inside Form
- FTP
- IPC
- Automation Ops Pipelines
- Release notes
- About the Pipelines activity package
- Project compatibility
- Activate Solution Deployment
- Analyze
- Build
- Clone
- Delete Solution Package
- Deploy Solution
- Download Package
- Download Solution Package
- Download Solution Package Configuration
- Publish Package
- Publish Solution Package
- Re-sync Solution Project
- Run Existing Test Set
- Run Tests
- Stage
- Uninstall Solution
- Update Process
- Upload Solution Package
- Persistence
- Release notes
- Project compatibility
- Bulk Form Designer
- Start Job And Get Reference
- Wait For Job And Resume
- Add Queue Item And Get Reference
- Wait For Queue Item And Resume
- Wait For Form Task And Resume
- Resume After Delay
- Assign Tasks
- Create External Task
- Wait For External Task And Resume
- Complete Task
- Forward Task
- Get Form Tasks
- Get Task Data
- Get App Tasks
- Add Task Comment
- Update Task Labels
- Create App Task
- Wait For App Task And Resume
- Configure task timer
- Working with App tasks
- Building Your First Form Action
- Advanced Controls for Drop-downs
- Embedding Objects in Form Actions
- Allowing Users to Upload Files to the Storage Bucket
- Adding Advanced Logic Using Java Script
- Setting a Default Tab
- Removing the Delete button from Edit Grid using custom CSS
- Customizing Edit Grid templates
- Using buttons to trigger custom logic
- Using an External Form Layout
- Dynamically expanding form components at runtime
- Aligning the content of a form component from left to right using JSON attributes
- Sample Workflows
- System
- Release notes
- Project compatibility
- Supported character encoding
- RegEx Builder Wizard
- Add Data Column
- Add Data Row
- Add Log Fields
- Add or Subtract from Date
- Add Transaction Item
- Add Queue Item
- Append Item to Collection
- Append Item to List
- Append Line
- Beep
- Break / Exit Loop
- Browse for File
- Browse for Folder
- Build Collection
- Build Data Table
- Bulk Add Queue Items
- Change Case for Text
- Change Type
- Check False
- Check True
- Clear Data Table
- Collection to Data Table
- Comment
- Compress/Zip Files
- Copy File
- Copy Folder
- Combine text
- Comment Out / Disabled Activities
- Continue / Skip Current
- Create File
- Create Folder
- Create List
- Custom Input
- Delete
- Delete File
- Delete Folder
- Delete Storage File
- Delete Queue Items
- Disable Local Trigger
- Do While
- Download file from URL
- Download Storage File
- Enable Local Trigger
- Evaluate Business Rule
- Exists in Collection
- Extract/Unzip Files
- Extract Date and Time from Text
- Extract Text
- File Change Trigger
- File Exists
- Filter Collection
- Filter Data Table
- Folder Exists
- For Each
- For Each File in Folder
- File Change Trigger V3
- Find and Replace
- Find Matching Patterns
- For Each Folder in Folder
- For Each Row in Data Table
- Format Date as Text
- Format Value
- Generate Data Table From Text
- Get Asset
- Get Credential / Get Orchestrator Credential
- Get Current Job Info
- Get Environment Folder
- Get Environment Variable
- Get File Info
- Get Folder Info
- Get Jobs
- Get Processes
- Get Row Item
- Get Transaction Item
- Get Username/Password
- Get Queue Items
- Global Variable Changed Trigger
- Input Dialog
- Invoke Code
- Invoke Com Method
- Invoke Power Shell
- Invoke Process
- Invoke VBScript
- Invoke Workflow File
- Is Text Matching
- Join Data Tables
- Kill Process
- Launch Workflow Interactive
- List Storage Files
- Log Message
- Lookup Data Table
- Manual Trigger
- Merge Collections
- Merge Data Table
- Message Box
- Modify Date
- Modify Text
- Move File
- Move Folder
- Multiple Assign
- New Item Added to Queue
- Notify Global Variable Changed
- Orchestrator HTTP Request
- Output Data Table
- Parallel
- Parallel for each
- Path Exists
- Postpone Transaction Item
- Process End Trigger
- Process Start Trigger
- Process Tracking Scope
- Raise Alert
- Read List Item
- Read Text File
- Read Storage Text
- Remove Data Column
- Remove Data Row
- Remove Duplicate Rows
- Remove From Collection
- Remove Log Fields
- Replace Matching Patterns
- Repeat Number of Times
- Repeat Trigger
- Rename File
- Rename Folder
- Report Status
- Reset Timer
- Resume Timer
- Retry Scope
- Return
- Run Local Triggers
- Run Agent
- Run Job
- Run Parallel Process
- Set Asset
- Send Email Notification
- Set Credential
- Set Environment Variable
- Set Task Status
- Set Trace Status
- Set Transaction Progress
- Set Transaction Status
- Should Stop
- Split Text
- Sort Data Table
- Start Timer
- Start Job
- Stop Job
- Stop Local Triggers
- Stop Timer
- Text to Left/Right
- Text to Upper/Lowercase
- Time Trigger
- Trigger Scope
- Track Object
- Timeout Scope
- Update Row Item
- Update List Item
- Upload Storage File
- Wait for Download
- Wait Queue Item
- While
- Workflow Placeholder
- Write Storage Text
- Write Text File
- AddDataRow
- AddQueueItem
- AddTransactionItem
- AppendLine
- BulkAddQueueItems
- ClearDataTable
- CompressZipFiles
- CopyFile
- CreateFile
- CreateFolder
- DeleteFileOrFolder
- DeleteQueueItems
- DeleteStorageFile
- DownloadStorageFile
- ExtractUnzipFiles
- FilterDataTable
- GetAsset
- GetCredential
- GetJobs
- GetQueueItem
- GetQueueItems
- GetResourceForLocalPath
- GetRowItem
- GetTransactionItem
- InvokeProcess
- JoinDataTables
- ListStorageFiles
- LookUpDataTable
- MergeDataTable
- MoveFile
- OrchestratorHTTPRequest
- OutputDataTable
- PathExists
- PostponeTransactionItem
- ReadStorageText
- ReadTextFile
- RemoveDataColumn
- RemoveDuplicateRows
- Replace
- SetAsset
- SetCredential
- SetTransactionProgress
- SetTransactionStatus
- SortDataTable
- StartJob
- StopJob
- UpdateRowItem
- UploadStorageFile
- WaitQueueItem
- WriteStorageText
- WriteTextFile
- Testing
- Release notes
- About the Testing activity package
- Project compatibility
- Project Settings
- Add Test Data Queue Item
- Address
- Attach Document
- Bulk Add Test Data Queue Items
- Create Comparison Rule
- Compare PDF Documents
- Compare Text
- Delete Test Data Queue Items
- Get Test Data Queue Item
- Get Test Data Queue Items
- Given Name
- Last Name
- Random Date
- Random Number
- Random String
- Random Value
- Verify Control Attribute
- Verify Expression
- Verify Expression With Operator
- Verify Range
- Address
- AddTestDataQueueItem
- AttachDocument
- BulkAddTestDataQueueItems
- DeleteTestDataQueueItems
- GetTestDataQueueItem
- GetTestDataQueueItems
- GivenName
- LastName
- RandomDate
- RandomNumber
- RandomString
- RandomValue
- VerifyAreEqual
- VerifyAreNotEqual
- VerifyContains
- VerifyExpression
- VerifyExpressionWithOperator
- VerifyIsGreater
- VerifyIsGreaterOrEqual
- VerifyIsLess
- VerifyIsLessOrEqual
- VerifyIsRegexMatch
- VerifyRange
- Workflow Foundation

Workflow Activities
Advanced Controls for Drop-downs
linkThe tutorials on this page demonstrate using drop-down lists with the UiPath Form Designer, inside the Create Form Task activity. The most used property for achieving the results in the tutorials is the FormData(Collection).
Creating dynamic drop-downs
linkUse them in workflows where you want to send dynamic data to populate a drop-down control inside a Form Action.
With this method, a variable of the type List of Strings holds the values of the drop-down list instead of adding static values on the Data tab in the UiPath Form Designer.
In the following example, we create a dynamic drop-down of countries, initialize a variable with the list of countries, and create an additional variable to capture the country selected by users.
To create a dynamic drop-down:
- In the Create Form Task activity, click the ellipsis (
...
) to the right of FormData. -
Add an argument for the dynamic drop-down as follows:
- Name:
countryList_dropdown
- Direction: In
- Type: List of Strings (
List<String>
) -
Value: Press Ctrl + K and enter
listOfCountries
as the variable name.ThelistOfCountries
variable contains the items in the drop-down list.Note: Array of Strings is also supported, but you must manually add the drop-down component in Form Designer and add the Field Key value.
- Name:
-
If you want to get the user selection back to the workflow, add another argument to capture the selected value:
- Name:
country
(the Field Key of the drop-down component) - Direction: In/Out or Out
- Type: String
- Value: Press Ctrl + K and enter
selectedCountry
as the variable name.
- Name:
- Click OK to close Form Data.
-
Open the Variables panel and initialize
listOfCountries
with the default valuenew List(of string) from { "India", "Romania", "US" }
.Tip: You can also choose to populatelistOfCountries
through other activities instead of initializing it.
Creating cascaded drop-downs
linkUse them in task-based forms when you want the selection in one drop-down (parent) to populate the values in the second drop-down (child).
To create a cascaded drop-down:
- In the Create Form Task activity,
click the ellipsis (
...
) to the right of FormData. -
Bind the parent dropdown to the workflow.
For this example, create an argument that passes thelistOfCountries
List<String> variable to the workflow as a dropdown list.Note: ThelistOfCountries
variable contains the items in the parent drop-down list, meaning the list of countries.- Name the argument
CountryList_dropdown
. The Field Key property name for this argument isCountryList
. - Set the Direction as In 2.3. Set the Type as
System.Collections.Generic.List<System.String>
- Set the Value as the
listOfCountries
List<String> variable.
- Name the argument
-
Bind the child dropdown to the workflow.
For this example, create an argument that passes thestateDictionaryList
Dictionary<String, List<String>> variable to the workflow as a dropdown list.Note: ThestateDictionaryList
variable contains the items in the child drop-down list, meaning the states for each country. - Name the argument
stateDictList_dropdown
. The Field Key property name for this argument isstateDictList
. - Set the Direction as In 3.3. Set the Type as
System.Collections.Generic.Dictionary<System.String, System.Collections.Generic.List<System.String>
- Set the Value as the
stateDictionaryList
Dictionary<String, List<String> variable -
Bind the child dropdown to the parent dropdown.
Create an argument with the name of the child dropdown and add the_parent
suffix. Then set the Value of the argument to the name of the parent dropdown, like this:”ParentDropdownVariableName”
.For this example, create an argument namedstateDictList_parent
. The child dropdown isstateDictList
and you add the_parent
suffix to it.-
Set the Direction as In.
-
Set the Type as
String
. -
Set the Value as the
”CountryList”
.When populating thestateDictList
Dictionary variable, take note that the dictionary Key is a value from the parent drop-down list and its corresponding Value is a list of options to be shown on the form if the parent is set to the key.Tip:You can pass the values to be pre-filled (for example, with country and state fields) in the FormData collection.
If you are passing child values, make sure you also include the parent value to prevent unexpected behavior.
-
-
Map each value from the parent drop-down to a List of Strings variable. You can populate the list (dictionary) for the parent drop-down in any way, but for this example, we use an Add to Dictionary activity for each value.
- Dictionary: the dictionary of
the child drop-down,
stateDictList
. - Key: a value from the list of
strings for the parent drop-down,
CountryList
- in this example,"US"
,"India"
, and"Romania"
. - Value: Press Ctrl +
K and enter a name for the the List of Strings variable which holds the
values to show in the child drop-down when the Key value is selected in the parent -
usaStatesList
,indianStatesList
, andromanianCountyList
, respectively.
- Dictionary: the dictionary of
the child drop-down,
- Make sure you place the activity or activities for the above step before the Create Form Task activity.
- Click OK to close Form Data.
-
Open the Variables panel and initialize the new List of String variables you created with the following default values:
- for
indianStatesList
:new List(of string) from { "Odisha", "Rajasthan", "Karnataka" }
- for
usaStatesList
:new List(of string) from {"Florida", "Georgia", "Washington"}
- for
romanianCountyList
:new List(of string) from {"Cluj", "Prahova", "Constanta"}
.
- for
Download these examples here
Creating cascaded drop-downs in Edit Grid and Data Grid components
linkTo use cascaded drop-downs inside a Edit Grid or Data Grid component:
- Create the drop-down fields following the steps above (using the FormData wizard).
- Open the Form Designer.
-
If the drop-down fields are not created inside your form, verify that:
- The
<dropdownKey>
,<dropdownKey>_dropdown
, and<dropdownKey>_parent
arguments are correctly added in the FormData collection. -
The GenerateInputFields box is checked.
- The
- Drag and drop the Edit Grid or Data Grid component.
- Drag and drop the drop-downs created at Step 1 into the Edit Grid or Data Grid component.
- Open the configuration menu for the child drop-down (click ).
-
In the Logic tab, notice the preconfigured advanced logic.
- Navigate to the Actions > Schema Definition field.
-
Replace
[data.<parent_dropdown_key>]
with[row.<parent_dropdown_key>]
in the schema expression.
Note: The row keyword instructs the form to use the parent value from the grid row. - Save the form.
Setting the number of search results for drop-downs
linkDrop-downs show at most four search results by default. You can change this limit by setting a property in the form design.
To set the number of search results for a drop-down:
- In the UiPath Form Designer, click Edit to open settings for the drop-down list and then select the Data tab.
- Under Choices.js options, add
{ "searchResultLimit" : x }
, wherex
is the maximum number of results you want to show.
Displaying all options inside drop-downs
linkIf the strings in the drop-down menu have more than 50 characters, they may be omitted from displaying.
To display all options matching your search term:
- Click Edit JSON
for the Drop-down List component you want to edit.
-
In the Component JSON field, add the following properties:
... "fuseOptions": { "distance": 800, }, "threshold": 1, "useExactSearch": false, ...
... "fuseOptions": { "distance": 800, }, "threshold": 1, "useExactSearch": false, ...
threshold
property dictates at what point the algorithm stops the search operation for the given search term. For example, a threshold
of 0
requires an exact match of letters and location. A threshold
of 1
can match anything, even spelling mistakes. Adjust the threshold
value based on your use case.