Tom
You're on the right track. For your products page question, the answer is you want to build a products module. This module would contain a couple of user controls. An imperfect way of changing asp.net thinking to DNN thinking is to think of asp.net pages == DNN module controls. Where you would build one asp.net page to handle products, you'd build one DNN Module to handle products.
Now, within your products module you're going to need a couple of things:
- a product view page
- a product edit page
- a product list page
Within your DNN Module, you'll have three controls (at least)
- productview.ascx
- productedit.ascx
- productlist.ascx
You will structure these modules into your overall module package so that only authorised users can 'see' the edit page and thus change the product information. Then, when you're ready to drop the module onto a DNN page, you will set up some basic module settings. For the scenario where you have the list on one page and the detail on another page, I normally create a configurable setting for the 'destination module'. To do this, create a new user control called 'productlistsettings.ascx' and, when you set up your module, make sure it has a <key>value in the manifest file of 'Settings'. That way, when the user clicks on the 'settings' icon of the product list module, your custom settings control will be loaded. On this settings control, just build a drop-down list of dnn tabs for the site. The user selects the tab for the 'destination' product module - which is the module that the 'productView'. Then, when you're in your module code, (for example, on an item_Databound event for a repeater control), you will build the Url link to the product view module page like this:
//gets the tab id of the product view page from the module settings
int tabid = int.parse(this.Settings["DestTabId"]);
//gets the url of the destination page, including the current product id
string destUrl = DotNetNuke.Common.Globals.NAvigateURL(tabId, "", "productId=" + productId)
//sets the product link hyperlink to the product destination page
HyperLink hl = (HyperLink)e.item.findControl("hlProductLink");
hl.NavigateUrl = destUrl;
You will build a .net class to represent 'ProductInfo' and the whole lot will be returned from your database using a SqlDataProvider, which is just a DataProvider built for your module. Grab an example module source and crack it open to get an idea of how this fits together. It will be daunting at first, but if you're an experience developer the peices will fall into place pretty quickly. The reason it looks more complicated than it needs to be is so that you can get plug'n'play flexibility. If you (think) you don't need this, then go ahead and code a simpler version up.
You will also want to look into implmeent the DOtNetNuke searchable interface into your module, so that you can feed your product list back to the DNN search engine. THis will allow you to integrate the site search with your product search.
This should get you started. Also look at my most recent blog post : Designing, Structuring and Architecting DotNetNuke Modules
Hope this helps. Once you go DNN, you'll never do a 'file->new project->asp.net website' again, I can promise you!