产品列表网页
SupplierID和CategoryID的数值将从Search.asp网页传递到List.asp网页中去,这些数值将提供参数给SearchGear存储过程(在后面的教程中介绍)并且显示搜索的记录集。这个搜索的记录集同时用在Detail.asp网页中。
在List.asp网页中的搜索记录集显示一个详细的Server Behavior(SB,服务器行为)在产品名字上,这个名字将传递表单参数给Detail.asp网页。如果你想让顾客可以在这里定货,那在这个网页上还需增加购物的内容。具体做法是将显示列表的重复区域插入到表单中,并且还需要一个数量表单元素(可视的或者如果1是仅有的选项时就隐藏),然后应用Add to Cart Server Behavior(SB)。
在本教程中因为一些项目有尺寸或者颜色的选项,我将迫使用户连到详细的网页中以处理这些选项。导航连接SB允许用户传送从搜索页面来的多个记录集网页。下面,你将看到基本的页面布局(如图5所示。)、数据绑定(如图6)以及服务器行为(Server Behaviors,如图7)。
||||||
图5中的1.是一个隐藏的区域,它设置成ProductID(产品ID)的记录集数值。如果你想设置这个页面可以从列表框中增加项目到UltraCart中,你需要这个表单元素。增加一个隐藏区域并在搜索记录集中绑定这个数值到ProductID。
具体的搜索存储过程的代码如下:
Alter PROCEDURE spSearchGear
@SupplierID varchar (255),
@CategoryID varchar (255)
AS
DECLARE @SQL nvarchar(1500)
SET @SQL = 'SELECT Category.Category,'+ ' Suppliers.CompanyName AS Company, Suppliers.SupplierID, Suppliers.URL,'+ ' Products.ProductID, Products.ProductName AS Product, Products.Note,'+ ' Products.UnitPrice, Products.MSRP, Products.Discount, Products.AvailableSize AS Size,'+ ' Products.AvailableColors AS Color, Products.UnitsOnOrder,'+ ' Products.UnitsInStock, Products.ReorderLevel, Suppliers.SizeURL,'+ ' Products.ProductAvailable, Products.CurrentOrder,'+ ' (Products.UnitPrice * Products.Discount + Products.UnitPrice) AS Price,' + ' (Products.MSRP - ((Products.UnitPrice * Products.Discount) + Products.UnitPrice)) AS Savings,' + ' Products.CategoryID'+ ' FROM Category INNER JOIN'+ ' Products ON'+ ' Category.CategoryID = Products.CategoryID INNER JOIN'+ ' Suppliers ON'+ ' Products.SupplierID = Suppliers.SupplierID'+
' WHERE Products.CurrentOrder = 1 AND Suppliers.CurrentOrder = 1'
IF @SupplierID NOT LIKE 'Z' SET @SQL = @SQL + ' AND Suppliers.SupplierID IN (' + @SupplierID + ')'
IF @CategoryID NOT LIKE 'Z' SET @SQL = @SQL + ' AND Category.CategoryID IN (' + @CategoryID + ')'
SET @SQL = @SQL + ' ORDER BY Suppliers.CompanyName, Products.ProductName'
EXECUTE (@SQL)
||||||购物对象
定义购物对象必须这时候进行,因为它将在后面的几个页面中出现。我没有在List.asp页面中使用它,但我将在Details.asp页面中使用它,所以我在这将定义怎样创建它。
在Details.asp页面的Server Behavior中选择UltraDev Shopping Cart/Shopping Cart。这是就会弹出一个对话框,上面的几个区域需要填写,如ProductID(产品ID)、Name(名字)、Quantity(数量)、Price(价格)、Total(总数)等等。你可以改变这些名字,你不必使用所有的,但是你不能移除它们的任意一个,因为它们已经被编码到UltraCart代码中去了。如果你想跟踪其它的信息,比如尺寸和颜色等等,可以选择“+”号并增加列的名字。缺省状态下只有一列:Total(Price*Quantity),它也被编码到UltraCart代码中去。你可以创建其它的计算列,如Shipping(weight * Zone)。你所增加的额外列将保持在Cart中,并且可以用于显示给顾客或者它们可以在测试过程中写给OrderDetails数据库。举个例子,你可能要在你的Cart上显示从产品表格传来的顾客装运重量,而不想保存在OrderDetails表格中的信息。你可能想指明每一件事物的装载价钱。
当你增加或者改变名字的时候,你想让它们当存在于数据库的时候都具有相同的区域名字。保存Cart信息到正确的数据库区域中,对于UltraDev行为来说是最容易的事情。为获得更多的关于调试Cart的内容,你可以参见UltraCart的帮助文件,具体做法是:点击UltraDev Help并选择UltraCart Help。UltraCart对话框如图8所示。
||||||产品详细数据页面
在List.asp页面上点击超级连接产品名字,使得用户连接到Details.asp页面。这个详细数据页面包括了搜索记录集以及购物Cart。为了增加信息到Cart你需要在一张表格中装入所有的详细数据记录。并在搜索记录集中将隐藏的表格元素命名为ProductID。这是为了确保当你按下增加到Cart时ProductID 写到Cart中去。表格中许多的区域是静态的并且是简单地取自数据库(产品名字、价钱等等)。一些区域如数量(Quantity)、尺寸(Size)以及颜色(Color),你需要让用户交互的的并且使它成为选择项或者输入项。将这些设置为适当的表单元素类型并且给它们相应的名字。从SB(服务器行为)Add to Cart(增加到Cart)通常用于增加定购信息到Cart中。记录集显示两个区域:AvailableColors 和AvailableSizes,还有两个编辑框:Color和Size,用户可以在适当的时候适当的地方键入正确的尺寸和颜色。当用户按下增加到Cart连接或者按钮的时候,ProductID(产品ID)、ProductName(产品名字)、Size(大小)、Color(颜色)、Price(价钱)以及Quantity(数量)将都增加到Cart中去。如图9所示。
||||||图9中的1.是一个隐藏的区域,它设置成ProductID的记录集数值。如果你想设置这个页面可以从列表框中增加项目到UltraCart中,你需要这个表单元素。增加一个隐藏区域并在搜索记录集中绑定这个数值到ProductID,如图10、图11所示。