Now and then I come across lists that have a large number of fields and need customized forms. Some of these lists have had 50, 100, or sometimes more than 150 fields to start with. Several considerations should be made when customizing forms for lists like these. Such as, are all fields necessary for input by the user, are there different categories of fields, what validations are required, what other customizations should be present of the form, what will effect performance of the form?
What effects performance?
The power of Nintex Forms is the amount of development that is completed for you when creating customized forms. But with any customization you add to SharePoint, even Nintex Forms has some realistic limitations. In SharePoint there are several hard limits like not being able to query more than 5000 items at a time. There are even limits for list columns that you cannot have more than 276 Single Line of Text fields in the same list. Having followed SharePoint's hard limits, for a form there isn't a hard limit in the number of controls or number of validations you can add. No matter the number it could still work, but the form may not submit in less than a second. Some things that effect performance are:
- Number of controls
- Number Validations or Rules
- Custom CSS
- Query Lookups
- General server configuration or client browser
What are the options?
There are many methods to improving a form's performance and improving user experience. Some methods that improve performance could improve or lesson a positive user experience while at the same time an improvement step for user experience could increase or decrease form performance. So if your form is not up to the level of performance you need it to be at, here are a few example methods to evaluate:
- Redirect. Have a form that provides all of the important or required fields and allow the user to submit. You can set the form to redirect to any URL such as another form, page, or list. One complication from multiple forms is providing a way to relate the two lists, items, or content types you capture data for. You can use the Nintex Form webparts to redirect as well.
- Tabs. Though you may have the same number of controls, tabs allow you to break up the form for a better user experience. Create Tab like functionality on your Nintex Forms
- Tasks. On the initial form, have the required fields but not all fields. Then a workflow will start and eventually have a task for the initiator or other appropriate users. This task can be a request data task with a custom form to get the remaining data.
- Correct Validation. Sometimes we duplicate validations, or could simplify them. Or set validations on the field in SharePoint and not in the form (like required)
- Use Site Workflow Start forms. You can have multiple site forms that save portions of data to a list. One may be able to redirect to the other, or you can send a link to the user to the other form. Forms can but put on pages using the form web parts. Designing a Nintex Workflow Start Form
- Reduce the amount of fields in the list. Maybe you find out that only 40 of 100 fields are ever filled out anyway and the other 60 are just not necessary.
- Reduce the amount of lookup fields and calculated fields. Any queries made to display content on the form will take time. Especially unfiltered queries not optimized with filters on indexes.
- Content Types. Add multiple content types to your list. A user could first choose the type of item they need to submit. Then each type has a subset of all fields. It could be that one type has 20, another 40, another 60 another 100. But allow the user to make that determination. Each content type will have a separate Nintex Form with their respective customizations. But the drop down on the top of the form will auto switch between the appropriate forms. Kind of like a tab form in a way. In this example a user would only fill out one form.
- Update your Nintex Forms version. There have been many updates along the way that have tackled form performance directly. Make sure you have the latest version if you are experiencing any issues.