隐藏代码项目
这些隐藏表单数值通常被插入CustomerID 、Timekey、 FirstName、 Lastname和Class到Orders表格中去。
1.TimeKey隐藏表单元素:数值设置为<% = TimeKey %>
2.CustomerID隐藏表单元素:数值设置为<% = Session("CustomerID") %>
3.FirstName隐藏表单元素:数值设置为<% = Session("FirstName") %>
4.LastName隐藏表单元素:数值设置为<% = Session("LastName") %>
5.Class隐藏表单元素:数值设置为<% = Session("Class") %>
6.MM_Insert:数值设置为True,代码会自动被Insert Record SB增加。
Check Out页面的数据绑定和服务器行为如图17、图18所示。Insert Order SB的对话框如图19所示。
||||||定货页面
定货页面如图20所示。对于新顾客,一个简单的重定向在这里可以使用。一旦用户在Checkout页面上按下Submit Order(提交定货)按钮,简单的VBScript代码可以重定向到Order页面以确认装载和开票信息,或者重定向到一个新的顾客描述页面,重定向到哪取决于CustomerID的Cookie或者Session变量是否存在。如果存在重定向到Order页面,如果不存在重定向到新的顾客描述页面。在本例子中,因为用户已经注册了,所以我们直接到Order.asp页面。
在该页面上你将可以看到两个记录集:rsOrders 和 rsCustomerInfo。提交Checkout.asp的动作增加了一个新的记录(CustomerID和Timekey)到Orders表格,然后重定向到Order.asp页面。这时由Checkout页面产生的CustomerID和Timestamp用作Primary Key(主键)对以取回新增的Order并从Orders 表格中取回OrderID,这样我们就可以将正确的OrderID写到OrderDetail表格中去。
我们已经知道从Login来的CustomerID,我们将这个CustomerID传递给CustomerInfo村庄过程,这个过程产生了关于顾客基本的信息用于rsCustomerInfo记录集的交易。在一个没有涉及到初始注册的商店中可以通过存储在用户PC中的Cookie来实现,这个Cookie包含了CustomerID或者用户的日志。
||||||下面介绍一下该网页的隐藏代码
1. ASP代码:它设置OrderID为Session变量
<% Session("OrderID") = rsOrder.Fields.Item("OrderID").Value %>
2. MM_recordId隐藏表单区域:数值设置为<%= rsOrder.Fields.Item("OrderID").Value %>"
3. MM_update 隐藏表单区域:设置设置为true
(Insert or Update Record SB)。我们可以使用Update Record SB(更新记录服务器行为),它将更新地址(address)、信用卡(Credit Card)或者装载信息(Shipping Information)。现在我们可以增加Save Cart to Table SB并且在OrderDetails表格上选择适当的区域来从Cart中插入数据。当你插入Update Record SB,UltraDev将将它置于页面的上部。你要将这个代码移到Recordset behaviors(记录集行为)下面,这样做是为了rsOrder和rsCustomer信息,所以它仍处于Save Cart to Table SB上面。如果你没有移动它,你的页面将不会工作。
我们需要将产生的OrderID传递给OrderDetails表格。再在表单中增加一个隐藏区域,命名为OrderID。接着选择表单元素并将它绑定给数值,因为OrderID是从rsOrders记录集返回的。其它的选项是设置OrderID为Session变量。不管你使用什么方法,在OrderConfirmation.asp页面的记录集将会将Request("OrderID") 或者 Session("OrderID")作为运行参数。
我们在Orders页面上有两个记录集,一个是用于顾客,另外一个用于定货。为了正确地更新,我们需要确保UltraDev知道哪个记录集示我们的主记录集。在页面的底部你将可以看到一个隐藏的区域。你需要确保这个区域的数值设置为Recordset.Field.Item("OrderID")
按下Complete Order(完成定货)按钮将做以下两件事情:更新Customer Record SB和Save Cart to Table SB。这种方法的一个有点是如果用户在按下Complete Order按钮之前取消了定货,已经存在的一行将写到Orders表格中,但是那儿没有相应的OrderDetails行。定货页面的数据绑定和服务器行为如图21、图22所示。
||||||Update Record SB对话框如图23所示。
Save Cart to Table SB对话框如图24所示。
||||||Order Stored Procedure(定货存储过程)的代码如下:
Alter Procedure spOrderSearch
--Name: spOrderSearch
--Author: Rick Curtis
--Date: 11/23/2000
--Returns the OrderID based on CustomerID and Timekey
@CustomerID varchar(50),
@Timekey varchar(50)
AS
set nocount on
SELECT OrderID, OrderDate FROM Orders
WHERE @CustomerID = @CustomerID
AND Timekey = @Timekey
return
而CustomerInfo Stored Procedure (用户信息存储过程)代码如下:
Alter Procedure spCustomerInfo
--Date: 11/24/2000
--Author: Rick Curtis
--Task: Selects customers for billing
@CustomerID varchar(25)
As
SELECT CustomerID, FirstName, LastName, Class, Address1, Address2, City, PostalCode, State, Room, Building, (Room + ' ' + Building) AS Address, AccessLevel, Phone, Voicemail, Email
FROM Customers
WHERE CustomerID = @CustomerID
return