SharePoint Custom List with Custom Content Types and Custom Display Forms

Web Design & Development

I recently ran into an issue with using multiple content types on a custom list in SharePoint. I wanted each content type to have its own custom display form (DispFormCustom1.aspx, DispFormCustom2.aspx, etc.). Using SharePoint Designer (SPD), you can right-click on the list, open the list properties, and view the Supporting Files tab to select a page for each content type. However, there is a trick to getting different content types to use different custom forms.

The Wrong Way

  1. With your site open in SPD, open the properties of the list with your custom content types and custom forms by right-clicking on the list in the Folder List pane and selecting “Properties,” then go to the Supporting Files tab.

    List properties
    Open the list properties
  2. Choose the first content type from the Content type specific forms drop-down menu.
  3. Click on Browse for the Display item form field and choose “DispFormCustom1.aspx” (or whatever you named your custom form). You’ll have to browse to the Lists folder, and then into the folder for the list itself if that’s where you created your custom form.

    Select the form to be used for the content type
    Select the form to be used for the content type.
  4. Click Apply, then click OK.
  5. In the browser, go to the list and test by viewing an item of that content type. It looks great! If you haven’t already, create a test item for each of the content types so you can view them while testing.
  6. Go back into SPD and repeat this process for each custom content type.

The problem I encountered is that all of my content types would be reset to use the default content type’s display form as soon as I clicked OK. After a lot of searching, browsing forums, and testing, I figured out how to get this to work by adding a few additional steps.

The Right Way

  1. With your site open in SPD, open the properties of the list with your custom content types and custom forms by right-clicking on the list in the Folder List pane and selecting “Properties,” then go to the Supporting Files tab.

    List properties
    Open the list properties
  2. Choose the content type that is currently set as the default content type from the Content type specific forms drop-down menu. The default content type is not always the first option in the drop-down menu; the menu is sorted alphabetically, so the default content type could be first, last, or anywhere in between (check your list settings in the browser to find out which content type is set as the default).
  3. Click on Browse for the Display item form field and choose “DispFormCustom1.aspx” (or whatever you named your custom form). You’ll have to browse to the Lists folder, and then into the folder for the list itself if that’s where you created your custom form.

    Select the form to be used for the content type
    Select the form to be used for the content type.
  4. Click Apply, then click OK.
  5. Close SharePoint Designer.
  6. In the browser, go to the list and test by viewing an item of that content type. It should be using the custom form now.
  7. While still in the browser, go to the list settings page and set a different content type to be the default (click on the Change new button order and default content type link, set the next content type to number 1, then click OK).
    Content Types for the list
    Content type settings are accessible on the list settings page. Click the "Change new button order and default content type" link.

    To set a default content type, assign it to position 1.
  8. Open SharePoint Designer (you did close it after setting the Display item form field for the first content type, right?) and repeat steps 1-7 for each additional content type that you want to use with a custom form.

I realize the process outlined above is cumbersome, but this is the only way I’ve been able to ensure that all of my content types can use their own custom display form without running into issues with resetting all of the content types to the same form. If anyone has additional tips on this behavior, let me know in the comments!


Comments

  1. Thanks for this well written how-to. I have been struggling with this all day, now I just have to try and implement it. I can't believe Microsoft hasn't put a better solution in place for this - with Salesforce this is extremely easy to do! :)
    1. Glad I could help! I beat my head against my keyboard for a while before figuring out how to make the forms stick to the right content types. Too bad it has to be this complicated...
  2. Thanks for writing this so clearly and cleverly! Your post was a pleasure to read, was easy to follow, and helped fix my problems.
    1. Glad it helped! Too bad this process has to be so complicated...
  3. Hi Josh, I have customized a display view linked to a list in SharePoint 2007. Everything was working well until I created a 2nd entry to that list. Once I tried to view the item, the display view alwaus opens to the first item from the list. Any idea how to open directly on entry n°2? BR
    1. SharePoint display forms use the ID parameter in the URL query string to determine which item to display. For example, your first item would be /Lists/YourList/DispForm.aspx?ID=1 and your second would be /Lists/YourLists/DispForm.aspx?ID=2. If you've created a custom display form, make sure that it's using the ID parameter correctly to determine which item to display.
  4. Hi Josh, Thanks for this article. I was stuck for this at a moment and tried searching for the solution on the internet until I have stumbled at this post. You're right it's cumbersome for I have at least 7 content types on my SharePoint list where all have a custom list.
  5. Hi Josh, Thank you alot, you save me a few hours of headhache. Thank you google
  6. wow. what a retro feel. customer has an old 2007 i had to mod & this brought back so many SPDesigner Fail moments from way back when.. thanks for the help.
  7. Awkward or what! I have a related problem, I want to link to my 'new item' forms from the quick launch panel, but it always goes to the current default, whichever URL to a NewForm I am using. I have added the content type to the URL and any number of variants, any clues on how (if..)this can be done?
  8. Sorry Josh, just discovered how to do it, I had a small error in my URL. For anyone interested after the .aspx add ?ContentTypeId= and the numerical content type (visible in the URL when you open up a new form for that content type).
  9. Hi Josh, great post. Not sure about 2007, but in SPD 2010 and 2013, you can go straight to the content type from the list settings page, and set the new/edit/display forms right from there. It took me awhile to find it, it's not very intuitive at all.

Comments are closed