Paul Galvin's (old) SharePoint space [SharePoint

Just another WordPress.com site

Standard WSS/MOSS Data Entry Screens Do Not Support Cascading Drop-downs (or other intra-from communication)

 

UPDATE (04/2008): This great blog entry shows a good javascript based approach to this problem: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): This blog entry looks promising as well: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Several times a week, if not daily, forum users describe a requirement that would normally be met via cascading drop-downs.  For example, I have two drop-down controls:

  • List of U.S. states
  • List of U.S. cities.

As responsible UI providers, we want it to operate like this:

  • Paul selects a U.S. state from the drop-down. 
  • This causes the cities drop-down to filter only those cities that belong to the selected state. 
  • Paul selects a city from this filtered list.

There is no out-of-the-box support for this feature.  In fact, there is no OOB support for any kind of direct intra-form communication.  This includes programmatically hiding/enabling/disabling fields in response to field changes elsewhere on the form.

The real objective of this article to to describe possible solutions and these are the options as I know them:

  1. Develop a custom column type.  As a custom-column-developer, you have full control over the "world" of that custom column.  You can implement a cascading drop-down that way. 
  2. Consider using workflow.  In some cases, you want to automatically assign a value to field based on another field’s value.  In this case, you would normally try to use a calculated column, but some times, it just won’t get the job done.  SharePoint Designer workflow is a relatively administer-friendly alternative to dropping down into code and visual studio.  If you go this route, be aware of the issue addressed by this article (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Event handlers: Like workflow, this is an after-the-fact solution.  Your event handler is a .NET assembly (C#, VB.NET) to which SharePoint passes control.  The object you develop has access to the data of the list (and the whole object model) and can do any needed calculation.
  4. Use SharePoint Designer to create custom entry forms.  I don’t have direct experience with this approach, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Roll your own ASP.NET data entry function (as a stand-alone web page or as a web part) and use that instead.

If anyone knows other and/or better options, please post a comment and I’ll update the body of this post.

<end/>

Technorati Tags:

4 responses to “Standard WSS/MOSS Data Entry Screens Do Not Support Cascading Drop-downs (or other intra-from communication)

  1. Mike December 8, 2007 at 12:27 pm

    Paul,Check this out: http://www.spsdev.com/filter.aspx . From their site: "SpsDev.Com’s Filter Field is a custom field type that does filtering. 
    You can add one to many filter fields to your list or library, and each one can
    be filtered based on another filtered field in the list.  Pick a state in
    one field, and the list of cities in the next field is filtered to only show
    items from that state, for example.  In this release we support SQL Server
    2000 and 2005, and Xml as sources for the field data.  As you change a
    selection in any of the drop downs, all of the drop downs below it are each
    filtered to show only the appropriate choices based on the selection that\’s
    been made."- Monjo

  2. Paul December 8, 2007 at 12:39 pm

    Monjo,
     
    Thanks for the comment, this is the kind of feedback for which I was hoping.
     
    It appears that as I write this, the cost is $349 USD?  If so, is that price for unlimited use?
     
    Thanks!
     
    –Paul
     

  3. Paul December 9, 2007 at 4:57 am

    I found a great little utility written by datacogs that has been very useful. They have used your first suggestion – custom column type option..
     

    Finally – clever filtered lookups!

  4. Kai Sheng January 11, 2008 at 3:38 am

    Do have a look at http://kaishenghoo.spaces.live.com/blog/cns!8A7458DB12CA5AC9!194.entry. Appreciate your feedback.
     
    I\’m not too sure if it is "the right way" but the approach is similar to using SharePoint Designer, but in my opinion, this is more suitable for ASP.NET-oriented developers, as there are some minor form of plumbing involved with "total control of behaviour".

Leave a comment