Title: Shopping%20Cart
1Shopping Cart
2ASP.NET State Management
- Session User state
- Application Application state
- Cache
- Static variables
- Public Shared interestRate as Single
- DemoStateTest2.aspx
3dim msg1, msg2, msg3 as string public shared
msg4 as string sub Page_Load() if not
page.ispostBack then msg1"hi one" msg2"hi
two" msg3"hi three" msg4"hi
four" response.write("First time loading page.
the message one is" msg1 "ltbrgt") response.wr
ite("First time loading page. the message two
is" msg2 "ltbrgt") response.write("First time
loading page. the message three is" msg3
"ltbrgt") response.write("First time loading page.
the message four is" msg4
"ltbrgt") session("myMsg1")msg1 application("myMs
g2")msg2 cache("myMsg3")msg3 else msg1session
("myMsg1") msg2application("myMsg2") msg3cache
("myMsg3") response.write("After the fist page
loading, the message one is" msg1
"ltbrgt") response.write("After the fist page
loading, the message two is" msg2
"ltbrgt") response.write("After the fist page
loading, the message three is" msg3
"ltbrgt") response.write("After the fist page
loading, the message four is" msg4
"ltbrgt") end if end sub
4Shopping Cart
- Product information
- Add item to cart
- View cart contents
- Check out
5Shopping Cart Example
- Database
- WebCustomer CustID, CustName, Addr, Phone
- WebOrder OrderID, CustID, OrderDate,
CreditCardType, CreditCardNo - WebLine OrderID, PID, Qty
- WebProduct Pid, Pname, Price, UnitsInStock
- Session ID is used for OrderID
- Other choices? Visitor Counter?
- Login user using cookie
- Each item is modeled as a class, and items are
collected in a collection before added to the
database.
6Implementing Shopping Cart as Class
- Shopping Cart Properties
- Public oid As String
- Public cid As String
- Public ODate As DateTime
- Public CreditCardType As String
- Public CreditCardNo as String
- Public CollCartLine As New ArrayList()
- Methods AddItem, DeleteItem, ViewCart, CheckOut
- DetailLine Properties
- OID
- PID
- Pname
- Price
- Qty
- Amount Qty Price
7Adding Buttons to a Bound DataGrid
- Use DataGrid/Columns editor
- Bound columns, Button columns, Template columns
- Button event procedures
- CodeWIndow/DataGrid
- DeleteCommand
- EditCommand
- CancelCommand
- UpdateCommand
- e As System.Web.UI.WebControls.DataGridCommandEven
tArgs
8DataGrid Button Commands Examples
- DeleteCommand
- emps.RemoveAt(e.Item.ItemIndex)
- Edit Command
- DataGrid1.EditItemIndex e.Item.ItemIndex
- Cancel command
- DataGrid1.EditItemIndex -1
- Update command
- emps.Item(e.Item.ItemIndex).salary
CDbl(CType(e.Item.Cells(4).Controls(0),
TextBox).Text) - DataGrid1.EditItemIndex -1
- DataGrid1.DataSource emps
- DataGrid1.DataBind()
9DataGrid Button Commands Example
Dim objDataSet As New DataSet Private Sub
Page_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not Page.IsPostBack Then Dim
strConn As String "ProviderMicrosoft.Jet.OLEDB.
4.0Data Source c\sales2k.mdb" Dim
objConn As New OleDbConnection(strConn)
Dim strSQL As String "select
pid,description,price from product"
Dim objAdapter As New OleDbDataAdapter(strSQL,
objConn) objAdapter.Fill(objDataSet,
"Product") DataGrid1.DataSource
objDataSet DataGrid1.DataMember
"Product" DataGrid1.DataBind()
Session("MyDs") objDataSet Else
objDataSet Session("MyDs") End
If End Sub Private Sub DataGrid1_EditComma
nd(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs
) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex e.Item.ItemIndex
DataGrid1.DataSource objDataSet
DataGrid1.DataMember "Product"
DataGrid1.DataBind() End Sub
10Private Sub DataGrid1_UpdateCommand(ByVal source
As Object, ByVal e As System.Web.UI.WebControls.Da
taGridCommandEventArgs) Handles
DataGrid1.UpdateCommand
objDataSet.Tables("Product").Rows(e.Item.ItemIndex
).Item("Price") CDbl(CType(e.Item.Cells(4).Contr
ols(0), TextBox).Text) DataGrid1.EditItemI
ndex -1 DataGrid1.DataSource
objDataSet DataGrid1.DataMember
"Product" DataGrid1.DataBind()
Session("MyDs") objDataSet End Sub
Private Sub DataGrid1_CancelCommand(ByVal source
As Object, ByVal e As System.Web.UI.WebControls.Da
taGridCommandEventArgs) Handles
DataGrid1.CancelCommand
DataGrid1.EditItemIndex -1
DataGrid1.DataSource objDataSet
DataGrid1.DataMember "Product"
DataGrid1.DataBind() End Sub Private Sub
DataGrid1_DeleteCommand(ByVal source As Object,
ByVal e As System.Web.UI.WebControls.DataGridComma
ndEventArgs) Handles DataGrid1.DeleteCommand
objDataSet.Tables("Product").Rows.RemoveAt(e.It
em.ItemIndex) DataGrid1.DataSource
objDataSet DataGrid1.DataMember
"Product" DataGrid1.DataBind()
Session("MyDs") objDataSet End Sub
11Adding Controls to a Bound DataGrid
- DataGrid Properties/Columns editor
- Template column
- HeaderText
- Web Pages HTML view
- Add ItemTemplate to the Template column tag
- Add Controls tag
- Example
- ltaspTemplateColumn HeaderText"Add"gt
- ltHeaderStyle Width"1in"gtlt/HeaderStylegt
- ltItemTemplategt
- ltaspButton text"AddToCart"Runat"server"gtlt/asp
Buttongt - lt/ItemTemplategt
- lt/aspTemplateColumngt
- Event ItemCommand
12How to retrieve data from a cell in the selected
row?
- Response.Write(CType(e.Item.Cells(0).FindControl("
tbox"), TextBox).Text) - Response.Write(CType(e.Item.Cells(5).Controls(0),
TextBox).Text)
13If there are two buttons created by ItemTemplate,
how to tell which button is clicked?
- Use the ItemCommand procedure
- Private Sub DataGrid1_ItemCommand(ByVal source As
Object, ByVal e As System.Web.UI.WebControls.DataG
ridCommandEventArgs) Handles DataGrid1.ItemCommand
- If e.CommandSource.text "View" Then
- Response.Write("You click View
button") - End If
- If e.CommandSource.text "Add" Then
- Response.Write("You click Add
button") - End If
- End Sub
14ShopCart Class
Public Class ShopCart Public oid As String
Public cid As String Public ODate As
DateTime Public CreditCardType As String
Public CreditCardNo As String Public
CollCartLine As New ArrayList() Public Sub
AddItem(ByVal line As CartLine) Dim item
As New CartLine() Dim incart As New
Boolean() incart False If
CollCartLine.Count gt 0 Then For Each
item In CollCartLine If item.pid
line.pid Then item.qty
line.qty incart True
Exit For End If
Next End If If incart
False Then CollCartLine.Add(line)
End If End Sub
15Public Sub deleteItem(ByVal deleteIndex As
Integer) CollCartLine.RemoveAt(deleteIndex
) End Sub Public Sub checkOut() Dim
objLine As New CartLine() Dim strSQL As
String Dim strConn As String
strConn "ProviderMicrosoft.Jet.OLEDB.4.0Data
Source c\sales2k.mdb" Dim objConn As
New OleDbConnection() objConn.ConnectionSt
ring strConn Dim objComm As New
OleDbCommand() objConn.Open()
objComm.Connection objConn
objComm.CommandType CommandType.Text
strSQL "insert into weborder values ('" oid
"', '" cid "', " ODate.ToString ", '"
CreditCardType "','" CreditCardNo "')"
objComm.CommandText strSQL
objComm.ExecuteNonQuery() For Each
objLine In CollCartLine strSQL
"insert into webline values ('" objLine.oid
"', '" objLine.pid "', " CStr(objLine.qty)
")" objComm.CommandText strSQL
objComm.ExecuteNonQuery() Next
End Sub End Class
16AddToCart Button Event Procedure
Private Sub DataGrid1_ItemCommand(ByVal source
As Object, ByVal e As System.Web.UI.WebControls.Da
taGridCommandEventArgs) Handles
DataGrid1.ItemCommand MyCart
Session("MyShopCart") Dim objLine As New
CartLine() objLine.oid
Session.SessionID objLine.pid
e.Item.Cells(0).Text objLine.pname
e.Item.Cells(1).Text objLine.price
CDbl(e.Item.Cells(2).Text) objLine.qty
CInt(CType(e.Item.Cells(1).FindControl("tbox"),
TextBox).Text) MyCart.AddItem(objLine)
Response.Write("number of items in cart"
CStr(MyCart.CollCartLine.Count)) End Sub
17Delete Button Procedure
Private Sub DataGrid1_DeleteCommand(ByVal source
As Object, ByVal e As System.Web.UI.WebControls.Da
taGridCommandEventArgs) Handles
DataGrid1.DeleteCommand
myCart.deleteItem(e.Item.ItemIndex)
Session("MyShopCart") myCart
DataGrid1.DataSource myCart.CollCartLine
DataGrid1.DataBind() End Sub
18CheckOut Procedure
Dim MyCart As New ShopCart() Private Sub
Page_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
MyCart Session("MyShopCart") End Sub
Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles Button1.Click MyCart.oid
Session.SessionID MyCart.cid
Session("cid") MyCart.ODate
DateTime.Now() MyCart.CreditCardType
RadioButtonList1.SelectedItem.Text
MyCart.CreditCardNo TextBox1.Text
MyCart.checkOut() Response.Write("ltp
align'center'gtltfont size'5'gtltbgtThank you for
shopping at My.Comlt/bgtlt/fontgtlt/pgt")
Session.Abandon() End Sub
19Web Service
- XML Web Service
- Web services are classes that are stored on the
web which can instantiate and use in both Windows
and Web applications.
20A Web Service ExampleASPET/TestWebService.ASMX
lt_at_ WebService Class"CustomerInfo" gt imports
System.Web.Services imports System imports
System.Data imports System.Data.Oledb Public
Class CustomerInfo ltwebMethod()gt public Function
GetCname(ByVal CID as String) as String dim
strConn as string "ProviderMicrosoft.Jet.OLEDB.4
.0Data Source c\sales2k.mdb" dim objConn as
new OledbConnection(strConn) dim strSQL as
string "select from customer where CID '"
CID "'" dim objComm as new
OledbCommand(strSQL,objConn) dim Results as
string objConn.open() dim objDataReader as
oledbDataReader objDataReaderobjComm.executeRea
der() objDataReader.read() return
objDataReader("Cname") end function
21Creating a Web Service Using VS
- New Project/ASP.Net Web Service
22Web Service Description Language (WSDL)
- A WSDL file is an XML document containing a
complete description of the web service. It
shows a web services name, methods, and
parameter types. - Help page After entering web services URL, a
help page is displayed. You can click the
Service Description link to see the WSDL file.
23Consuming Web Services from a Windows Application
- Add a web reference to the web service.
- Declare a web service class variable.
- Dim myWebService As New dchaolaptop.CustomerInfo()
- Demo UseWebService
24Universal Description, Discovery, and Integration
(UDDI)
- A directory service for web services.
- http//uddi.org