This is more of a general question, than a specific coding problem. I'll start by saying that my background is in classic ASP, and I have been given a high priority project to write in ASP.NET. I have bought several books, and read what seems like hundred of articles, and watched just as many tutorial videos... I consider myself a fairly quick learner, but this is something I am having a hard time with, and I was hoping that you experts can offer me some advice!!
I have an ASP legacy application that I need to convert (actually re-write and upgrade) to ASP.Net 2.0. It is an Order Entry system used by our sales team to take information from a customer and enter the order. This order is then received by our logistics department for further processing.
Here's my problem:
The form that the sales people fill out consists of one "Header Page" with all of the general order information, such as customer, contact info, date received, shipping instructions, and number of items in the order. When they click "next", for each "item" in the order, a new form is displayed with fields that are required to configure an item. Our items are not something that can be picked from a catalogue, unfortunately. Every single one has to be configured with approximately 75 inputs from the user. (We are a glass company, so there are many technical specifications that go into making a glass order). Consequently, each of these items has a dynamic number of deliveries that need to be determined by the user entering the order. For example, Item 1 may have 2 delivery dates, but item 2 might have 5 delivery dates.
In classic ASP, what I did was set session variables when the user clicked "Next" to go from the Header page to the Item setup page. I used these session variables then to display each item. In order to make every field on the page have a unique name, I would do something like this <input type="text" name="itemType<%Response.Write("i")%>" > where "i" is the number of the item used in a for loop. As part of the individual item setup, I would have a buton to "Setup delivery dates", and when that button was clicked, a new page would appear, and the user would configure x amount of deliveries for that item (x is determined by the user). Once that page is completed, I would use the session variables and send them back to the Item setup page to continue with the rest of the items. Once all items and deliveries are completed, they would be sent to an Order Review page, and then the order would be submitted. It works pretty well.
My problem, in ASP.Net is that I can't figure out a way to fill out these multiple forms and then submit them all to the database at one time. I want to use data-bound controls, so once I fill out the data on a page, and submit it, the controls will be entered to the DB. I would like a way to click "next" on each page, and then at the end have a way to review all data, and then submit. I am figuring that data-bound controls are going to be the mst robust, since I will need to allow logistics to be able to retrieve the order, and all items, and delivery dates that correspond to it. If logistics finds an error, then the order must be sent back to sales for corrections.
I have been struggling trying to use the Wizard control to do this, and also the FormView Control to do this. Either way, I need a way for the data to be "read only", "editable", and "insert new".
I have also toyed with the idea of having a Multiview, with several views, one for the header section, and several for each item... But from what I can tell, that is not very efficient......
I am really struggling with this, and I have to try and make a decision so that I can move on.
I am open to any ideas that anyone may be able to offer me, such as combining all fields into one page (but I need a way to dynamically display and access x number of fields), or to totally forget about databound controls, but then I need a reliable way to insert, edit, and select all of the data....
I'm sorry for the lengthy, and probably blabbing explanation, but I tried setting it out on the table...