What is Cascading drop down? Cascading drop-downs are linked drop-down controls, where the content of the second drop-down depends on the selection of the first one. E.g., When you choose a Country in the first drop-down, the second drop-down State is automatically filtered to the list of states actually in that county. Cascading drop-downs are quite a common requirement, and unfortunately, SharePoint doesn’t support it out of the box.
In this article, I’m documenting the implementation of cascading drop-down functionality in SharePoint list forms using InfoPath forms step by step (at least for my own reference! Even a simple mistake takes hours to resolve).
In short: You create a new data source to retrieve “Region” and “Country” columns from the Countries list and then filter the countries drop down to show only items matching with the “Region” selected in “Regions” drop down.
InfoPath Cascading Dropdown List Setup:
Here is my List setup:
Regions – List of Regions – Parent List for Countries list’s Region column.
Countries -List of Countries with Region as lookup column from “Regions” list
Projects List – List to capture project data, Where Region and Country columns are from above lists as lookup columns.
Step 1: Customize SharePoint List in InfoPath Designer
Open the Project SharePoint list in the browser click on the “Customized Form” button under List Tab. This opens your SharePoint list form in InfoPath Designer. Alternatively, You can open InfoPath Designer and Customize SharePoint List form. This establishes the data connections between the SharePoint list and InfoPath.
BTW, To utilize InfoPath browser farms, you need to have the SharePoint Server Enterprise edition and “SharePoint Server Enterprise Site Collection features” feature activated at the site collection level.
Step 2: Create New Data Connection:
Add new data connection in InfoPath to retrieve Country & its respective Region.
In InfoPath Designer, Click on Data Tab, Click on Data Connections, Click on Add button
In Data Connection Wizard, Click on Receive data then on Next
Click on SharePoint Library or list and then on Next button
Provide the URL of Countries List then on Next
Select the Countries list then on Next
Select the Country and Region fields, and click on Next
Provide a name to your data connection (say: Country) and click on Finish.
Step 3: Change the Data Source of the “Country” Drop down and Apply Filter:
Once we created the data source for the Country,
Select the “Country” Drop Down in InfoPath form designer, Right Click and choose “Drop down List box Properties” to get the Control Properties window.
In Data source dropdown, Select the new data source we created in Step 1 (In my case its: “Country”). Now, proceed to step.
Apply Filter to Country Dropdown: The Next step is to filter country values in the Country drop-down based on the selected Region.
In Entries section, click on the tree button. This brings Select Field or Group window.
Select the d:SharePointListItem_RW node under “DataFields” and click on Filter Data button.
In the Filter Data window, click on Add button
In specify Filter Conditions,
In the Country drop-down, Add filter for Region. That is Region from Countries data connection = Region from the main data connection. since Region is a Lookup column – The matching rows will be retrieved. Here is how: In the first drop-down list choose the “Region” field, Set the condition to: is equal to, in the next drop down choose: Select a field or group – This brings another window to select the field.
Under “Fields” drop down, Change the drop down value from “Country(secondary)” to “Main”.
Once you select “Main” in fields drop down, you’ll get a list of fields of the main data connection (In my case, it’s “Project:” list fields). Select the Region field from the list, and click on OK. Click on OK again to go back to the Country drop down properties window
Set Value and display Name Fields of Country Dropdown:
Finally, in the Country drop-down properties, Set the Value and Display name fields to ID and Title respectively by selecting it through the tree button. This is because the Country drop-down is a lookup field that stores lookup ID value internally. If you leave it as d:Title, you will get an error when you save the list item.
Step 4: Add a Rule to “Regions” Drop down to Clear Countries Drop down on Re-selection:
This is important because You’ll have to clear the secondary cascading drop-downs upon re-selection of the primary drop-down.
Select the Region Drop down in InfoPath designer, From the ribbon click on Add Rule, Select This Field Changes, Set a Field’s value.
Choose the field as “Country”, leave the Value as blank and click OK.
That’s it! Now, from InfoPath Designer, Save and Publish the form!
Salaudeen Rajack - SharePoint Expert with Two decades of SharePoint Experience. Love to Share my knowledge and experience with the SharePoint community, through real-time articles!
10 thoughts on “Cascading Dropdown in SharePoint List using Infopath Forms”
Now, additionally to the steps you’ve gone through here, let’s say I want to auto populate a text field with the name of the president of the selected country in the selected region. How do I achieve that? The presidents name is located in the country list. In other words, I want to look up what value the president column has on the selected country. I’ve tried to find a solution for this problem with no luck. I’m using infopath 2013.
add default list items to dropdown list in asp.net but it was showing same id number 1 and number 2 in DEV TOOL but in the list it was sorted out by order list. this is the left part of above question, required your help.
Hi Salaudeen,
i already have a data in one of my list for drop down menu for the website in sharepoint 2013 but now if i add a new data in that perticular list and sorted by the ORDERBY with correct numbers, for example 1, 2, 3 ….and so on, but the name which appear number 1 in the list is showing at the bottom(LAST) of that certain drop down menu.
Please help me
Hi just to clarify, do I need to create two sharepoint list?
i created a form and needs to have a cascading dropdowns, my example is based on company code the availability of job functions. So my dropdowns are Company code and Job functions
I’m new to SharePoint – coming from MS Access where I had created cascading dropdowns. It was very important to have this functionality in the lists I was creating. After unsuccessfully trying other methods finding this method was fantastic and it works!!
Now, additionally to the steps you’ve gone through here, let’s say I want to auto populate a text field with the name of the president of the selected country in the selected region. How do I achieve that? The presidents name is located in the country list. In other words, I want to look up what value the president column has on the selected country. I’ve tried to find a solution for this problem with no luck. I’m using infopath 2013.
Does this work if the 2nd field in the Infopath form(e.g.Country here) is multiselection list box? Thank you!
add default list items to dropdown list in asp.net but it was showing same id number 1 and number 2 in DEV TOOL but in the list it was sorted out by order list. this is the left part of above question, required your help.
Hi Salaudeen,
i already have a data in one of my list for drop down menu for the website in sharepoint 2013 but now if i add a new data in that perticular list and sorted by the ORDERBY with correct numbers, for example 1, 2, 3 ….and so on, but the name which appear number 1 in the list is showing at the bottom(LAST) of that certain drop down menu.
Please help me
Great worked, just what I wanted.
thanks a lot Salaudeen…so much !!! im only application Manager and this page saved me 🙂
Yoani
id already like to say “HPN” 🙂
Hi just to clarify, do I need to create two sharepoint list?
i created a form and needs to have a cascading dropdowns, my example is based on company code the availability of job functions. So my dropdowns are Company code and Job functions
Yes, You’ll have to create two lists “Company Code” and “Job Functions”. Company code should be a lookup column in Job Functions List.
Clear and simple.
I’m new to SharePoint – coming from MS Access where I had created cascading dropdowns. It was very important to have this functionality in the lists I was creating. After unsuccessfully trying other methods finding this method was fantastic and it works!!