I am just starting on a complex data entry form and thought I'd ask for input from anyone that may have gone down a similar road before.
The form is going to represent a cost estimate (plus additional information) for a project consisting of multiple tasks. All TaskTypes are pre-defined in metadata for a ProjectType, and can consist of various different input options depending on the TaskType, which will then drive how the user interface renders for the grid of tasks for the ProjectType instance.
For example:
Task Type xxxxxxx Input Options:
TaskName DataType InputType LowLimit HighLimit Options
TaskType1 Number TextBox 100 1000
TaskType2 Number DropdownList 1;2;3;4;5
TaskType3 Memo Textbox
TaskType4 Text DropdownList Jan;Feb;Mar;Apr;May
This is basically just a few examples...I will have to support basically any sort of input type possible on a form, render it appropriately, and then save it back to the database when editing is complete.
I will be doing this in webforms as I have not touched MVC yet.
I will need to have all task displayed in a table/grid and all simultaneously editable (ie: no putting a GridView row into edit mode then updating). I suspect this may be a bit much to expect of the standard Microsoft GridView, especially being able to edit all rows at once, but if anyone has come up with a clever way to pull this off before let me know. I'd be happy to pay for a 3rd party control, so if anyone has any suggestions on ones that support simultaneous multi-row editing nicely, let me know. Or, is there some sort of jQuery based solution that would be the best way to handle this?
Another question is, how should one store this in a database? Should I just store each datatype in a varchar(max) Value column, should I have a NumericValue, TextValue, VarCharValue column, and then use the appropriate one? Or is there an entirely different approach that would be more appropriate?
UPDATE
This webform is going to be quite big, the user will be editing 30+ tasks per project, each will be a row in the grid, with proper input control(s) appropriate for the data type, ie: textbox,calendar, textarea, dropdown, etc. HOW TO DO THE UI IS MY BIGGEST QUESTION.
The kind kind of reporting that will be done will be a high variety, so storage should make this as easy as possible.