This project has moved and is read-only. For the latest updates, please go here.




Certified for SharePoint 2007 Certified for SharePoint 2010


The SPCascadeDropdowns function lets you set up cascading dropdowns on SharePoint forms. What this means is that you can enforce hierarchical relationships between column values. The function uses the GetListItems operation of the Lists Web Service to refresh the allowable values based on relationships which are maintained in reference lists. By implementing this function, there are no coding requirements to manage the hierarchical relationships (once it is in place) and you can let your users manage the content in the reference lists.

This function works with any number of options in the dropdowns as well as multi-select parent and child columns, as shown in the following table. This is significant because each of the three column types are rendered significantly differently by SharePoint.
    <20 options 20+ options multi-select
childColumn <20 options
  20+ options

When the relationshipList contains lookup columns for both the relationshipListParentColumn and relationshipListChildColumn columns, the function uses the relationshipListParentColumn's ID rather than the relationshipList item's ID. This means that "secondary lists" are also supported.

Note that "multiple cascades" are supported, such as Country -> Region -> State. In this example, we have two "cascades" in place: Country -> Region, and Region -> State. There's not a lot to show here, but the available options in the dropdowns will change based on the relationships defined in the lists shown below. So, if you choose Country = United States, the options for Region will be limited to Northeast, Southeast, Midwest, Mountain, Southwest, Northwest. If you choose Country = Canada, the options for Region would be Eastern Provinces, Western Provinces.

Demo Page

Take a look at our demo page .


  • Relationship list contains at least two columns: relationshipListParentColumn and relationshipListChildColumn
  • The dropdown for childColumn is a lookup into relationshipList's relationshipListChildColumn column OR a list column which is a lookup into another list column ("secondary list").


  relationshipWebURL: "",
  relationshipList: "",
  relationshipListParentColumn: "",
  relationshipListChildColumn: "",
  relationshipListSortColumn: "",
  parentColumn: "",
  childColumn: "",
  CAMLQuery: "",
  CAMLQueryOptions: "<QueryOptions><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns></QueryOptions>", // Added in 2013.01
listName: $().SPServices.SPListNameFromUrl(), promptText: "", simpleChild: false, // Added in v0.6.2 selectSingleOption: false, // Added in v0.6.2   matchOnId: false, // Added in v0.7.1
completefunc: null, debug: false });

The URL of the Web (site) which contains the relationshipList. If not specified, the current site is used. Examples would be: "/", "/Accounting", "/Departments/HR", etc. Note: It's always best to use relative URLs.

The name or GUID of the list which contains the parent/child relationships. If you choose to use the GUID, it should look like: "{E73FEA09-CF8F-4B30-88C7-6FA996EE1706}". Note also that if you use the GUID, you do not need to specify the relatedWebURL if the list is in another site.

The StaticName of the parent column in the relationshipList

The StaticName of the child column in the relationshipList

The CAMLQuery option allows you to specify an additional filter on the relationshipList. The additional filter will be <And>ed with the existing CAML which is checking for matching items based on the parentColumn selection. Because it is combined with the CAML required to make the function work, CAMLQuery should contain a CAML fragment such as:

<Eq><FieldRef Name='Country'/><Value Type='Text'>United States</Value></Eq>

This option can be used to specify additional options for retrieval from the sourceList. See the MSDN documentation for GetListItems for the syntax.

If specified, sort the options in the dropdown by this column otherwise the options are sorted by relationshipListChildColumn

The DisplayName of the parent column in the form

The DisplayName of the child column in the form

By default, set to the list name for the current context based on the URL. If your form is outside the context of the list, then you can specify the listName yourself.

Text to use as prompt. If included, {0} will be replaced with the value of childColumn. The default value is "".
NOTE: I discourage the use of this option. Yes, I put it into the function, but if the user doesn't make a choice, they get an ugly error because SharePoint doesn't understand it as an option. I've left in in for backward compatibility.
Deprecated in v0.7.1.
If set to true, the child dropdown will be converted to a "simple" dropdown - only if it is a "complex" dropdown on page load. See $().SPServices.SPComplexToSimpleDropdown for details on how this works.  The default value is false.

If set to true and there is only a single child option, select it.  The default value is false.

By default, we match on the lookup's text value. If matchOnId is true, we'll match on the lookup id instead. The default value is false.

If specified, the completefunc will be called each time there is a change to parentColumn. Potential uses for the completefunc: consistent default formatting overrides, additional lookup customizations, image manipulations, etc. You can pass your completefunc in either of these two ways:

completefunc: function() { something...
completefunc: doSomething,    // Where doSomething is the name of your function

Setting debug: true indicates that you would like to receive messages if anything obvious is wrong with the function call, like using a column name which doesn't exist. I call this debug mode.


To make the example shown at the top of the page for Country -> Region -> State work, here's what you need to do.

The end result will look like this:




You'll need these three relationship lists:

Countries List
The Countries list simply contains all of the country names, stored in the list's Title column.

Regions List
The Regions list contains all of the Region names in the Title column. The Country column is a Lookup column into the Countries list's Title column.

States List
The States list contains all of the State names in the Title column. Note that I've changed the DisplayName of the Title column to State, but the StaticName is still Title. The Region Name column is a Lookup column into the Regions list's Title column. (The State Abbreviation column is only here to show that you can also store additional information about the States in this list. The same is true of the Countries and Regions lists, of course.)

This is the sum total of what you'll need to add to your page to make the function work for the example above. The first two lines simply pull the script files into the page, and the $(document).ready(function() line is a jQuery function that says "Run this script when the page has been fully rendered". In the first call to the function, note that we're turning debug mode on by setting debug: true.

<script language="javascript" type="text/javascript" src="../../jQuery%20Libraries/jquery-1.8.2.js"></script>
<script language="javascript" type="text/javascript" src="../../jQuery%20Libraries/jquery.SPServices-0.7.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
    relationshipList: "Regions",
    relationshipListParentColumn: "Country",
    relationshipListChildColumn: "Title",
    CAMLQuery: "<Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq>",   parentColumn: "Country",
    childColumn: "Region",
    debug: true
    relationshipList: "States",
    relationshipListParentColumn: "Region_x0020_Name",
    relationshipListChildColumn: "Title",
    relationshipListSortColumn: "ID",
    parentColumn: "Region",
    childColumn: "State"

Last edited Oct 16, 2013 at 5:54 PM by sympmarc, version 63


pinkstonmatt Mar 3, 2017 at 11:04 AM 
Okay I will admit I am a novice at this but would really like to get it working...

I have four lists... my main and three that I created to handle the dropdown fields:

PursuitType - Columns title (which is the PursuitType)
Gates - Columns title (which is the gate name) & PursuitType (which is a lookup to PursuitType:title)
Milestones - Columns title (which is the milestone name) & Gate (which is a lookup to Gates:title)

My code for the three fields looks like:
<td valign="top" class="style3" style="width: 15%; color: #000000; font-family: Tahoma;">Pursuit Type</td>
<td width="400px" valign="top" class="style1">
<SharePoint:FormField runat="server" id="ff2x{$Pos}" ControlMode="New" FieldName="PursuitType" __designer:bind="{ddwrt:DataBind('i',concat('ff2x',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@PursuitType')}"/>
<td valign="top" class="style3" style="width: 15%; color: #000000; font-family: Tahoma;">Gate</td>
<td width="400px" valign="top" class="style1">
<SharePoint:FormField runat="server" id="ff2{$Pos}" ControlMode="New" FieldName="Gate" __designer:bind="{ddwrt:DataBind('i',concat('ff2',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Gate')}"/>
<td valign="top" class="style3" style="width: 15%; color: #000000; font-family: Tahoma;">Milestone</td>
<td width="400px" valign="top" class="style1">
<SharePoint:FormField runat="server" id="ff15{$Pos}" controlmode="New" fieldname="Milestone" __designer:bind="{ddwrt:DataBind('i',concat('ff15',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Milestone')}" />

And finally here is the code I have in the module from this lesson:

<PlaceHolder id="MSO_ContentDiv" runat="server">

<script language="javascript" type="text/javascript" src="jquery-1.11.0.min.js"></script>
<script language="javascript" type="text/javascript" src="jquery.SPServices-2014.02.min.js"></script>

<script language="javascript" type="text/javascript">
$(document).ready(function() {
relationshipList: "Gates",
relationshipListParentColumn: "PursuitType",
relationshipListChildColumn: "Title",
CAMLQuery: "<Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq>", parentColumn: "PursuitType",
childColumn: "Region",
debug: true
relationshipList: "Milestones",
relationshipListParentColumn: "Gate",
relationshipListChildColumn: "Title",
relationshipListSortColumn: "ID",
parentColumn: "Gate",
childColumn: "Milestone"

* Page loads fine no error
* Drop Downs only reflect what is in the column definitions not whats in the tables

What am I doing wrong? Any help would be greatly appreciated.....

Rockie Feb 23, 2017 at 4:39 PM 
Marc, thank You much second time! Your Library is Great and it helps me a lot!

Best regards,

Francoise61 Jan 11, 2017 at 8:32 PM 
Hi, I just posted my solution for cascading dropdowns with 2 parents and 1 child here:

Anshuwa Nov 3, 2016 at 7:49 AM 
Hi, followed the documentation and developed a script. The issue I'm facing is, upon selection of a parent item, child items are not loading. When I checked with firebug a response returns with the right ItemCount , but they are not loaded to the child dropdown. What could be the reason? The libraries I'm using are jquery-1.9.1.js and jquery.SPServices-2014.02.js.

ggeter Sep 14, 2016 at 3:30 PM 
I had a need to reset the cascade and re-apply when another field on the form changed. Calling this function a second time does not do the trick. So, I had to reset the Data object on the fields so the cascade function would fire again. Here's how I did the reset:

var parentSelect = $().SPServices.SPDropdownCtl({
displayName: "My Parent Col Name"
var childSelect = $().SPServices.SPDropdownCtl({
displayName: "My Child Col Name"

Then, re-running SPCascadeDropdowns with new values sets it up again.

benigemperle Jul 18, 2016 at 3:22 PM 
It even works with SharePoint 2013 and SharePoint 2016.

Rockie Jun 23, 2016 at 9:46 AM 
Marc, Thank You very much, it helped a lot! :)

Best regards,

jumarcil May 21, 2015 at 10:02 PM 
Great Stuff; now would it be possible to make this cascade List work in quick edit mode where you see all your lists elements ?

baiguai May 8, 2015 at 9:09 PM 
I've been avoiding cluttering the comments with this, but my desk now has a permanent imprint of my forehead in it. I keep getting the following:

parentColumn: Title
Column not found on page

relationshipList: "{da0c6b8e-300e-474c-ac8e-73f52b390681}",
relationshipListParentColumn: "Title",
relationshipListChildColumn: "Branch",
parentColumn: "Branch",
childColumn: "Reservation Resource",
listName: $().SPServices.SPListNameFromUrl(),
debug: true

I definitely have a Title column in my table, and the parent table is shown in a drop down in the 'Branch' column of the list. Unless I'm mistaken - the relationshipListParentColumn is the column in the parent lookup list, and the parentColumn is the parent column within the list that contains the cascading lists.
I've tried tweaking the code above and tried renaming columns etc and nothing has worked so far. I'm not sure where I'm screwing up.


shraddhabatwalkar Mar 12, 2015 at 8:04 PM 
Hello all,
I am working on sharepoint office 365 environment.I have implemented the same scenario its not working in my case when i add the JS script URL to Content editor webpart the states webpart where i am using only for single cascade gets hidden ... I am seriouly in need of help i would be great if any body could help me out.

chrisdix Oct 8, 2014 at 5:08 PM 
Is it possible when a user selects a parent and adds the child, but when I go to add another parent, the previous selected child disappears. I would like to add children of multiple parents to the form, but when you select a new parent item, the children that have been selected disappears. Any suggestions?

bbellin2 Sep 26, 2014 at 5:12 PM 
Hello, this is a really great feature. I'm currently using CascadeDropdowns and need to have the ability to have control over the option's value. Currently it displays numbers for a value and need to have it match the text name. I was hoping that there's a way to set that property. Please help. Thanks in advance.

jmatuska Sep 17, 2014 at 5:00 PM 
Have it working on my New and Edit forms - love it! Is there any way to implement this cascade if a person is using the "Quick Edit" (datasheet entry) in SP 2013? After choosing my first column, in the second column ALL of the choices are there; they are not filtered based on the first column.
Thanks Marc!

awhitlow Sep 9, 2014 at 2:06 PM 
I think I am missing something, but I created a list with columns, and 2 lookup columns. I then created another list for the information in the 2 look up columns. I set the columns to pull information from the 2nd list. It does it. BUT it does not automatically select it for you - so when you select the item in the first drop down look up column;

Alternate it should automatically select ALT for the 2nd column.

I am using code:

// Set up the cascade from Module Code to Module
listName: "Location Module Rack",
relationshipList: "Location Module Rack",
relationshipListParentColumn: "Module Code",
relationshipListChildColumn: "Module",
relationshipListSortColumn: "Module",
parentColumn: "Module Code",
childColumn: "Module"
Can you please help i am not sure what I am doing incorrectly.

digbar Jul 30, 2014 at 8:19 PM 
Is there any way that i could get a cascade that would return in the child dropdown all States of a specific Country, skipping Region?

DaveDaveDave Jul 7, 2014 at 11:07 AM 
re: - I've popped my solution to getting "(None)" as a value onto that discussion thread. Hope it helps someone.

snehalparkar May 21, 2014 at 12:00 PM --- also the screen shot attached as per int this because if i select none it throws unexpected error when i save

snehalparkar May 21, 2014 at 11:57 AM 
Is there any work around on this article

snehalparkar May 21, 2014 at 11:44 AM 
None option is appearing after FEB CU update even when the column is required. Is there any facility to OFF the same.

snehalparkar May 21, 2014 at 11:42 AM 
None option is appearing after FEB CU update even when the column is required. Is there any facility to OFF the same.

Ikonoklast Mar 19, 2014 at 4:51 PM 
Is it possible to create a cascading drop down that is dependent on multiple parent fields. For example. I have a lookup to a list of cars. Each car has a list of other properties, Color, Sunroof, Power Windows, MPG. On my current list item is it possible to ask the user to answer each question (only one or all questions). (Example. What color car do you wish to have?, Do you want a Sunroof?.... and so on) then then filter the lookup column based off what the user has entered above?

emfuentes27 Mar 13, 2014 at 2:44 AM 
Marc. Thank you this great library. I have been using it a while now, but I'm having an issue. My dropdowns were working perfectly until our SharePoint site was migrated to the Microsoft Cloud (SP 2013/Office 365). Are you aware of any issues SPCascadeDropdowns has with this new version of SharePoint or environment? jQuery itself is still working, so that doesn't seem to be the problem. Thansk!

TimothyEdgar Mar 7, 2014 at 4:09 PM 
How would I cascade a dropdown based on a lookup in a Parent list?

I have a Projects list where I have the user select a Supplier from the Suppliers list. In the Tasks list, I have the user select a Supplier Location from the Supplier Locations list. I would like the Supplier Location dropdown in the Tasks list to be filtered to only records in the Supplier Location list whose Supplier field matches the Supplier field in the Projects table. How would I modify your code to do so? I am having problems passing the Supplier field in the Projects list to the Tasks list because Supplier is a lookup field.

gox777 Mar 6, 2014 at 10:50 PM 
Here's a follow-up to my previous comment...

I was looking for a way to make the parent column an autocomplete field (using SPServices.SPAutocomplete). My workaround was to let the parent field remain a dropdown lookup, but I wrote a couple lines of jQuery which modifies this the selected option of this parent dropdown with the text of whatever was chosen from the autocomplete field. I then made the parent dropdown invisible with some CSS and viola! Seems to work well.

gox777 Mar 6, 2014 at 7:05 PM 
Is it possible to combine SPAutocomplete with SPCascadeDropdowns?
(The parent column would be an autocomplete column. The child would be a dropdown)
How would one go about doing this?

smolahloe Feb 24, 2014 at 12:42 PM 
Marc, I'm getting 'column not found', my column has got spaces - is this an issue? I even tried using "_x0020_" still getting the same error.

nutansh Feb 6, 2014 at 4:53 PM 
This is really nice.

I have a question here :
Can this cascading works with one lookup as main filter.. Like if i have Country as main lookup and want Region and City to Filter based on Country.. I tried this operation and it dint work out using Cascading. I understand cascading is level based filter..Can you suggest me an alternate to implement this behavior using SPServices Framework.

Lookup : Country
Lookup : Regions (filter based on Country)
Lookup : Cities (filter based on Country).

Here Region and City are not related in anyways other than Country

Country List : ID, Title
Region List : ID , Title, Country
City List : ID, Title, Country

Thanks a lot in advance !!!!

codeipus Jan 17, 2014 at 8:18 PM 
Hi, Marc. This is great stuff and I've used it for lookup columns. Can I use it for a choice/text column: I want to have a one-time lookup that doesn't change if the original look up value is modified. [I've tried a choice column, but while it filters the drop down, I get an error from sharepoint when I hit ok.] Hope that makes sense. Or is there a simpler way of doing what I want.
Thanks. Keep up the great work.

Bibhu_13 Jan 8, 2014 at 10:30 AM 
I have creates 2 lists.

ProcessArea: Title
ProcessSubArea:Title,ProcessArea(Look up to ProcessArea List Title column)
Then I have created a document library named ProcessMapping where I have created 2 look up columns to above two list's Title Column.

ProcessMapping: ProcessArea(Look up to ProcessArea List Title column), ProcessSubArea(Look up to ProcessSubArea List Title column)

I have then uploaded the two java script library files (jquery-1.10.2.min.js and jquery.SPServices-0.7.2.min.js) to one of the document libraries in the same site.

Then I have added a content editor webpart to the default edit form of the document library and put below java script in it.

<script language="javascript" type="text/javascript" src="<<relative path>>/jquery-1.10.2.min.js"></script>
<script language="javascript" type="text/javascript" src="<<relative path>>/jquery.SPServices-0.7.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
relationshipList: "ProcessSubArea",
relationshipListParentColumn: "ProcessArea",
relationshipListChildColumn: "Title",
CAMLQuery: "<Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq>",

parentColumn: "ProcessArea",
childColumn: "ProcessSubArea",
debug: true

The objective I want to achieve here is, when I edit any document property, my ProcessSubArea values should be populated based upon my selection of ProcessArea.

However I am getting below error now.

"Error in function
relationshipListParentColumn: ProcessArea or relationshipListChildColumn: Title
Not found in relationshipList ProcessSubArea
Click to continue"

The ProcessArea dropdown is being populated with data, but the ProcessSubArea does not have any data in it.

Please advice how can I get rid of this error.

zwelding Nov 14, 2013 at 5:01 PM 
Does this work with SharePoint 2013? If so, are there any changes?

I_mran_22 Jun 28, 2013 at 7:54 AM 
First of all thanks for great stuff. I am using cascading drop down as Country -->Grade ---> Salaries in a list. When I click "+Add Items" in the list , it opens a dialogue box and cascading works fine, but when I select different country then Grade shows correctly but Salaries shows old value. I am using below Camelquery : '<Eq><FieldRef Name="country"/><Value Type="Text">'+CurrentValue+'</Value></Eq>'

I am not sure why it works only first time but not second time . I have checked the CamelQuery which getting properly updated with changed Country value.

Any help will be appreciated.


sharepoint3 Jun 10, 2013 at 6:36 PM 
I use this on the same page as your SPFilterDropdown function. For the column using that one, there the a noneText option, but not for SPCascadeDropdowns. The result is a confusing user experience since the fields do not appear the same when a NewForm is opened. Can you add the noneText option to this function?

lexy1213 May 30, 2013 at 8:46 AM 
Is there a way to properly filter the parentList? I had the impression I could use the CAMLqueryoptions for that and added:
CAMLQueryOptions: ""<Query><Where><Eq><FieldRef Name=\"Active\" /><Value Type=\"Text\">1</Value></Eq></Where></Query>"

Well.. I didn't work =) any advises?

mgonzales03 May 13, 2013 at 9:43 PM 
IE10/Chrome 26.0.1410.64 m reports a bug:
SCRIPT5007: Unable to get property 'split' of undefined or null reference
jquery.SPServices-0.7.2.js, line 1702 character 3
using Sharepoint 2010

mgonzales03 May 13, 2013 at 6:08 PM 
Question: Can I use a html form web part instead of using the SP Designer. I added my jquery/SPServices reference and added the SPCascadeDropdowns call. I don't get the cascading effect. Any pointers?

rajnesh Apr 10, 2013 at 5:59 AM 
hi thanks its working fine..
but in my case i am using IE8
when i select from 1st drop down it doesnt reflect in 2nd drop down as fast it takes time.
and that's creating problem any suggestion
Because when i checked in Google Chrome it was working fine, it gives response quickly.

MohamedSaeed Mar 21, 2013 at 12:33 PM 
Thanks its really helpful but I have problem when I am applying to Document Library it works only with lists
anyone knows why ??

bigpix2000 Feb 20, 2013 at 4:02 PM 
I am having trouble with the CAMLQuery ... it is not working but the main relationship is not failing. I have confirmed the field name to be correctly spelled. Could the bit type be an issue? Here is my code:

$(document).ready(function() {

relationshipList: "{AD30E2F6-DD99-4EB3-9611-7290983C14BE}", //LiaisonsList library
relationshipListParentColumn: "Client_Lookup",
relationshipListChildColumn: "LiaisonCODE",
parentColumn: "Client_Lookup",
childColumn: "Liaison_Lookup",
CAMLQuery: "<Eq><FieldRef Name='archive'/><Value Type='Bit'>0</Value></Eq>", //search for items not archived where no = 0?
debug: true});

IHMUNRO Jan 25, 2013 at 12:32 AM 
Hi @codemonkey09

Thanks for the comments on the quotes - it is not the quotes.

I started again from scratch and got it working, so that is good.

My next step was to change the names - Region and Country to suit my Application. I update the code etc, but it doesnt like that, so until I can figure out why it is not working, I have Region and Country as part of my code on the site.

Any other ideas would be appreciated.

iOnline247 Jan 24, 2013 at 8:40 PM 

There's nothing wrong with the sample code above. I write CAML with double quotes wrapping the text all the time and prefer it that way. You probably picked up an invalid character from the copy & paste, which is very common when copying code from a web page. The "quotes" are almost always messed up and need to be re-typed.


IHMUNRO Jan 24, 2013 at 8:06 PM 
Hi Mark

Just to update the log for everyone's benefit. One thing I was not aware of how to do was find out if the code was being caled correctly - but found one of your others posts which clearly identifies how to do it - than you for that. The code is being called correctly, but am getting an error which I cannot figure out why as it seems to be wired the same as your example:

codemonkey09 Jan 24, 2013 at 7:42 PM 
Thank you so much for this code! I had a problem with the CAMLQuery parameter. I had CAMLQuery: "<Eq><FieldRef Name='Closed'/><Value Type='Boolean'>0</Value></Eq>" and I was getting a javascript error about a missing {. I switched the double and single quotes and it started working. CAMLQuery: '<Eq><FieldRef Name="Closed"/><Value Type="Boolean">0</Value></Eq>', did anyone else have this problem? You might need to switch them in your documentation.

IHMUNRO Jan 24, 2013 at 6:43 PM 
Hi Mark

I thought I would get in touch regarding the cascading dropdowns.

I have followed yours and others that have setup similar functionality to the letter.

I get the dropdowns on screen as expected, but if I say Click on Norway, in the next Dropdown, I get all the cities for all countries, not just the Norwegian ones.

I have checked that the links to the files are correct - how would i know that they are being called correctly ?

Any ideas what is happening ?


jdeblasi Jan 18, 2013 at 6:35 AM 
Great work Marc. Thank you. I've used SPServices successfully for a couple of projects. One recent struggle I'm hoping you can help with. Example: Cascading Lookups for columns A through D. Column D's lookup needs to not only be based on the selection in column C, but that of A, B and C. I appreciate any assistance. Thanks, Jack

scvinod Jan 15, 2013 at 3:48 PM 
Is there anyway to make this work for a multi select look up column? Please advice. Thanks.

VLinnemann Jan 4, 2013 at 3:23 PM 
This solution works fine! One thing I would like to know: Is it possible to show only distinct values in the ChildColumn? - I think about using completefunc to filter out the redundant entries. But I don't know how to do that. Anybody has the same problem and can help me out?

mjonila Dec 31, 2012 at 11:25 AM 
How to make SPCascadeDropdowns work with different SP language packs installed ? F.i. I have different Form "DisplayName" in different languages, so if I make it work in one, it does not work in another. I'm talking about "parentColumn" and "childColumn" properties, where I need to set "DisplayName" of the form.
Please suggest a workaround.

iOnline247 Dec 19, 2012 at 3:56 PM 

Can you post the details of what problem you are facing in the Discussions? Most people don't follow the comments here.


Pinguwien Dec 19, 2012 at 1:17 PM 
Perhaps it is obvious to all of you, but I don't know how to create the Form itself?! Can I just create a new visual webpart with asp-Element Dropdownlist in it and add SPServices with a CEWP on-top (or below?) this webpart?

Would be very nice to get an answer,

best regards,

chengster128 Dec 18, 2012 at 9:07 PM 
This is awesome but it's not working for a Choice Field with multi-select (checkbox). When I make the field into a dropdown it works. Can you tell me how you were able to make the checkboxes dynamic? Thanks.

Lavanprax Nov 20, 2012 at 9:09 PM 
Marc, The filter works fine. Can I default one of the columns with the value from querystring? I use[SPServices.Querystring]. Thanks.


jmcfarland Nov 5, 2012 at 10:22 PM 
Marc, can SPCascadeDropdowns be added anywhere except within the NewForm.aspx, EditForm.aspx etc.. ? Let's say I had a cascade.aspx page and I inserted "New Item Form" into the page. Would SPCascadeDropdowns work there? I tried using SPCascadeDropdowns on a page where I inserted "New Item Form" and could not get it to work.

jmcfarland Nov 5, 2012 at 8:25 PM 
This blog post demonstrates how to implement $().SPServices.SPCascadeDropdowns.

sharon1188 Sep 7, 2012 at 6:51 PM 
My first time using jquery, and while it took a while for me to make sense of all this and implement the code, it worked on the first try. THANK YOU!!!

vikas_sahara Sep 5, 2012 at 8:53 AM 
I am having problems using this in MOSS 2007 where my relationship list is in the other subsite. In this case although I can access this list using relationshipWebURL/GUID but due to the limitation of MOSS 2007 I cannot have cross site look up column defined out of the box. If I use cross site lookup like the one in It does not seems to work.

Is there any workaround for achieving this?
Thanks in advance.

desaichintan Aug 10, 2012 at 12:00 PM 
thanks Marc for your lovely useful stuffs. Just want to share that I was facing "Column not found" error after configuring CEWP. However, I resolved it. Earlier, I configured it simply below List web part but we need to configured it with NewForm.aspx and EditForm.aspx. It work like a rocket. Thanks again.

Fatcharlie Jun 8, 2012 at 3:25 PM 
For the life of me, I can't get this script to anything at all; not even an error. I've followed the instructions many times over and yet I get nothing. Are the directions not quite exactly right or something?

JoeMuc77 Jun 8, 2012 at 11:05 AM 
I have a big problem, because of my child column in the form never have any values but no error will be shown.
can anybody help me?

ashishg May 23, 2012 at 10:08 PM 
I've requirement to filter a dropdown column's value based on two parent dropdown columns' selected values. How can I use SPCascadeDropdown function to achieve this?


azmantek May 1, 2012 at 3:06 AM 
Hi Marc,

Thank you for your hard work on SPServices. It has been helping me a lot. Currently I run into an issue with multiple content types in a library with SPServices on EditForm.aspx. If we use different content type and columns are not available, it will pop up an error message. Please let me know if we are able to tie this cascading drop down with a specific content type. Thanks a lot.

dlgross Apr 21, 2012 at 1:09 PM 
Marc, could you please modify the documentation to cleary state that the RelationshipList value needs to be the Display name of the list, i had assumed that it was the static name and it took me a while to figure out why it was not working. Thanks

Kishan12345 Mar 30, 2012 at 12:37 AM 

It works fine in SharePoint 2010 with both Library & list.
I have one query, Can you help me into this :..

Can we get a Prepopulated column value in the edit form.aspx as it opens.
Eg: As the Form open the Region column value contain the Midwest(as default value) & the State is also populated according to it....!!!

Much Thanks


sympmarc Dec 13, 2011 at 2:13 PM 
sanosano: Please post your questions in the discussions. You don't need to use CAMLQuery to specify the Country value; that's the whole point of the function. Finally, the reason that you need the double click is because SharePoint renders dropdowns in different ways based on how mant values there are. Consider using the simpleChild option. M.

sanosano Dec 13, 2011 at 9:54 AM 
Very Comprehensive one...
But when I try to pass the selected value of first dropdown in a CAML query using a variable it does not work properly. Given the snippet below for reference.

<script type="text/javascript">

var CurrentValue;
$("input[title$='Country']").select(function() {
var CurrentDropDownList = $(this);
CurrentValue = CurrentDropDownList.val();

$(document).ready(function() {

relationshipList: "City",
relationshipListParentColumn: "Country",
relationshipListChildColumn: "Title",
parentColumn: "Country",
childColumn: "City" ,

relationshipList: "Area",
relationshipListParentColumn: "City",
relationshipListChildColumn: "Title",
parentColumn: "City",
childColumn: "Area",
CAMLQuery:"<Eq><FieldRef Name='Country'/><Value Type='Text'>"+CurrentValue+"</Value></Eq>",

Anyone has any idea why it woks only when i "doubleclick" on the selected dropdown. The function is called only when the click event is performed. It does not pass the value as soon as the dropdown list is selected. need an urgent solution.. thanks so much in advance :)

dadvan Oct 26, 2011 at 4:56 AM 
I am unable to get this to work in one of my forms. I believe everything is setup properly. No errors are being displayed.

veekill Sep 28, 2011 at 1:29 AM 
I'm trying to make this work for my application page. Can you please let me know what needs to be changed?


sagarun Sep 23, 2011 at 2:41 PM 
simpleChild: true, makes IE cry, CPU goes upto 50% , The page hangs for a moment. I also see around some 9000 records in the dropdown, (lookup)

MurugiaR Sep 21, 2011 at 2:06 PM 
HI , The filter is working fine as expected , but im redirected to error page when i click the save button after selected all the properties in the list editform ... please comment me if i missing anything ..

sdeshbhratar May 5, 2011 at 10:42 PM 
never thought this would be as simple as 1-2-3
this is awesome work...thanks a lott for all the effort that has been put into this....

sympmarc Mar 22, 2011 at 6:29 PM 
edm: I'd like to hear more about your "Filtered lookup column" idea. Please post whatever you're thinking about in the Discussions. I do see what you mean about the two calls to GetList. I'm going to add it into the Issue Tracker and figure out how to eliminate the second one. M.

iOnline247 Mar 22, 2011 at 1:40 PM 
Care to offer up some of your code to do that @edm? I'm sure Marc would appreciate that.

edm Mar 22, 2011 at 6:27 AM 
Great component. It calls 'GetList' 2x on every dropdown change, should be easy to reduce number of these calls. How about a Filtered lookup column using the same approach ? I like it better than the custom field approach, much simpler.

sympmarc Feb 25, 2011 at 10:37 PM 
LoisLane: Please use gthe Discussions fro question. I'm moving your question here:

LoisLane Feb 25, 2011 at 9:38 PM 
This is awesome. I just have one ?... when selecting the 2nd choice, it's a little slow... sticky. And I have to click a few times to get it to select and move on. Am I missing something?

sympmarc Jun 25, 2010 at 12:38 PM 
TracyK: Let's move this conversation over to the Discussions. I don't get alerted to comments on the individual Wiki pages (nor do you, I believe), and I'd like to help you through this. Create a new discussion thread and I'll help you there. M.

TracyK Jun 25, 2010 at 5:51 AM 
Thanks for the response, and I sorry if I'm to new to understand, however I am reading the statement on the Documents area (just above these comments) and it states:
"This is the sum total of what you'll need to add to your page to make the function work for the example above..." However I can't seem to determine if your talking about the NewForm.aspx or the site page or something else?

sympmarc Jun 24, 2010 at 2:30 AM 
Tracyk: Check the main Documentation page. At the bottom, there are some instructions. If that doesn't get you there, post in the Discussions. M.

TracyK Jun 23, 2010 at 6:51 AM 
For those of us that are not so well SharePoint coding endowed, can you specify where this code is placed to enable this functionality?

sympmarc May 29, 2010 at 1:48 PM 
The None option is present if the column value is not required. Change the column to required, and the None value will be gone. M.

anxevil May 28, 2010 at 6:26 PM 
That's great stuff, It saved us a lot of time. Do you guys know if there is a easy way to prevent users to select the option "none" when we embad the cascading ?