Make “Choice” Fields Easier to be Managed by Users

If there’s one thing that I’ve learned about SharePoint, it’s that there’s about a dozen different approaches that you can take to implement just about anything in it. The “choice” field in SharePoint is no different.

The direct approach is to open the settings of your list or library, and add a new column of type “Choice”. Populate the choice options in the settings, and choose your choice “type” (dropdown, radio, checkbox). The down side to that is in order to edit or add new choices, more than contributor access is required. In many cases, the power users want to be able to add new choices without having to ask for assistance, but we don’t necessarily want to grant additional access in most cases.

Enter the Lookup field.

I create a new custom list and give it an appropriate name like “Types”, “Choices”, “Business Unit Names” – you get the idea. If the site will have multiple choice options that I’ll want to “delegate” user control on (to a specific few users, of course) I’ll name it something more generic. The column names don’t matter – you can keep the “Title” field as-is, or you can rename it (e.g. to something like “Business Unit Names”). If you’re going to want to use this single list for all of your choice fields in a site, add more columns (of type “single line of text”) with names that will be intuitive for your users. Also, make sure to make NONE of the columns a required field! This is important if you’re using multiple columns.

So, for example you’ll have a list titled “My Choice Field Options”, with columns “Choices A”, “Choices B”, “Choices C”, etc. Again, none of which are required. Now, each column can have any number of “options” entered – all independent of each other. It looks counter-intuitive at first glance, but works like a charm.

Example screenshot of the list with options added.

My example list with some options populated

Now that that’s all setup, navigate to your list or library where you want to use these options. Create a new field – of type “lookup”. Set the field requirement, title, and description as you like. For the “get information from” field, select your new custom list that you’ve prepped.

NOTE: This will only work if the list or library using these choices is located in the SAME site as the custom list containing the choice options. See below for more on this.

For the “in this column” field, select the appropriate column from your prepped list (“Column A”, “Column B”, etc.). Allow multiple items if you prefer, and click OK.

Now, as soon as options are added to your new custom list, there will be options available to choose from (as seen in my screenshot above). You can reuse these columns on lists and libraries throughout your site without duplicating the data! As soon as a new option is added to your custom list, it’ll be available for all of these places.

The most access that you will need to grant is Contributor. Heck, you could be a real stickler and create a custom permission level to allow read + add, but not edit or delete. The users will be able to see the options available, and add to them, but nothing more. (Admittedly, this is not the best option if you’re using a single list to host multiple choice field lookups.)

Going a step further…

The plain old “lookup” will only work within the same site. But what if you want to use and reuse these lookups in your subsites too? Site columns!

Choosing the location of a lookup field is a no-brainer since it has to be located within the same site that it’s content will be consumed. However, the location of your custom list when using site columns needs a little forethought. Consider the highest level where you’re planning on using it, and who will need to have access to update the choices.

Let’s just say that we setup our custom list at the root of our portal. We create it, setup the columns, and grant the necessary access. Initial prep work done.

Now go to Site Actions > Site Settings > Galleries > Site columns > Create

Set your column name as appropriate. Set it as type “lookup” the same way mentioned earlier. I like to put my site columns in a custom group – usually the name of the client or department to help me find them later. And that’s it for the prep work. To put it to use, you’ll need to take a slightly different approach.

Open your list or library that will need to use this site column. This can now be within the same site, or any sub-site. Open the list settings, scroll down to the “Columns” section and “Add from existing site columns”. If you put it in a custom group, you can filter the available site columns by group to find it easier. Select the site column, click the “Add >” button and click OK. If you don’t like the site column’s name or description, once it’s added to your list or library you can go back to the list settings and click on the column’s name to edit those properties, set it to a required field, allow multiple options, etc.

One weird thing to note.

In either case (plain lookup, or lookup by way of site column), since these “options” are actually referring back to list items, these options will have links back to the original item… It’s confusing to the users that may stumble onto it, and click the link to see what it does, but makes complete sense from an admin/configuration perspective. It’s harmless, but a potential cause of questions or confusion. I haven’t had the time to figure out a way to strip that link. If you know of one that doesn’t require coding your own custom web part from scratch, let me know!

Screenshot of underline example

Screenshot of underline example

Keep it clean.

I can be a bit of a perfectionist at times. I like to keep things clean and orderly, and remove or disable anything unnecessary. While you’re configuring the custom list, remove it from the QuickNav – the normal portal users don’t need to be aware of it. Disable attachments and folders. That should be it!