shopping cart. asp.net state management session: user state application: application state cache...

31
Shopping Cart

Post on 20-Dec-2015

216 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Shopping Cart

Page 2: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

ASP.NET State Management

• Session: User state

• Application: Application state

• Cache

• Static variables:– Public Shared interestRate as Single

• Demo:StateTest2.aspx

Page 3: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

dim msg1, msg2, msg3 as stringpublic shared msg4 as stringsub 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 + "<br>")response.write("First time loading page. the message two is:" + msg2 + "<br>")response.write("First time loading page. the message three is:" + msg3 + "<br>")response.write("First time loading page. the message four is:" + msg4 + "<br>")session("myMsg1")=msg1application("myMsg2")=msg2cache("myMsg3")=msg3

elsemsg1=session("myMsg1")msg2=application("myMsg2")msg3=cache("myMsg3")response.write("After the fist page loading, the message one is:" + msg1 + "<br>")response.write("After the fist page loading, the message two is:" + msg2 + "<br>")response.write("After the fist page loading, the message three is:" + msg3 + "<br>")response.write("After the fist page loading, the message four is:" + msg4 + "<br>")

end ifend sub

Page 4: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Shopping Cart

• Search and display product information

• Add item to cart

• View cart contents

• Check out

Page 5: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Shopping 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.

Page 6: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Implementing 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

Page 7: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Adding 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.DataGridCommandEventArgs

Page 8: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Edit/Delete Customer Record

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then OleDbDataAdapter1.Fill(DataSet31, "customer") DataGrid1.DataBind() Session("MyDs") = DataSet31 Else DataSet31 = Session("MyDs") End If End Sub Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand DataGrid1.EditItemIndex = e.Item.ItemIndex DataGrid1.DataBind() End Sub

Page 9: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand

DataSet31.Tables("Customer").Rows(e.Item.ItemIndex).Item("rating") = CType(e.Item.Cells(4).Controls(0), TextBox).Text DataGrid1.EditItemIndex = -1 DataGrid1.DataBind() Session("MyDs") = DataSet31 End Sub Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand DataGrid1.EditItemIndex = -1 DataGrid1.DataBind() End Sub

Page 10: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand

DataSet31.Tables("customer").Rows.RemoveAt(e.Item.ItemIndex)

DataGrid1.DataBind() Session("MyDs") = DataSet31 End Sub

Page 11: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

• DeleteCommand: DataSet31.Tables("customer").Rows.RemoveAt(e.Item.ItemIndex)

• Edit Command:– DataGrid1.EditItemIndex = e.Item.ItemIndex

• Cancel command:– DataGrid1.EditItemIndex = -1

• Update command: DataSet31.Tables("Customer").Rows(e.Item.ItemIndex).Item("rating") =

CType(e.Item.Cells(4).Controls(0), TextBox).Text– DataGrid1.EditItemIndex = -1–

• Note: CType(e.Item.Cells(4).Controls(0), TextBox)

DataGrid Button Commands Examples

Page 12: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

DataGrid 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 = "Provider=Microsoft.Jet.OLEDB.4.0;Data 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_EditCommand(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

Page 13: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand objDataSet.Tables("Product").Rows(e.Item.ItemIndex).Item("Price") = CDbl(CType(e.Item.Cells(4).Controls(0), TextBox).Text) DataGrid1.EditItemIndex = -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.DataGridCommandEventArgs) 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.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand objDataSet.Tables("Product").Rows.RemoveAt(e.Item.ItemIndex) DataGrid1.DataSource = objDataSet DataGrid1.DataMember = "Product" DataGrid1.DataBind() Session("MyDs") = objDataSet End Sub

Page 14: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Adding Textbox and Button and to a Bound DataGrid

• DataGrid Properties/Columns editor:– Template column:

• HeaderText: This text will be used as column name

• Web Page’s HTML view:– Add ItemTemplate to the Template column tag– Add Control’s tag

• Event: ItemCommand

Page 15: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Example<asp:TemplateColumn HeaderText="Quantity">

<ItemTemplate>

<asp:TextBox id="txtQty" Width="70“ runat="server"></asp:TextBox>

</ItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="AddToCart">

<ItemTemplate>

<asp:Button Text="AddToCart" Runat="server"></asp:Button>

</ItemTemplate>

</asp:TemplateColumn>

Page 16: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

How to retrieve data from a cell in the selected row?

Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand

• Response.Write(CType(e.Item.Cells(4).Controls(1), TextBox).Text)

• Response.Write(CType(e.Item.Cells(4).FindControl("txtQty"), TextBox).Text)

End Sub

Note: Cells(4).Controls(1)

Controls(0) is the cell itself, Controls(1) is the 2nd control in the cell.

Page 17: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

If 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.DataGridCommandEventArgs) 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

Page 18: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

ShopCart ClassPublic 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 ReadOnly Property CartTotal() As Double Get Dim item As New CartLine Dim total As Double Dim itemIndex As Integer For Each item In CollCartLine total = total + item.price * item.qty Next CartTotal = total End Get End Property

Page 19: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

AddItem MethodPublic Sub AddItem(ByVal line As CartLine) Dim item As New CartLine() Dim incart As New Boolean() incart = False If CollCartLine.Count > 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

Page 20: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Public Sub deleteItem(ByVal deleteIndex As Integer)

CollCartLine.RemoveAt(deleteIndex)

End SubPublic Sub checkOut()

Dim objLine As New CartLine()

Dim strSQL As String

Dim strConn As String

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb"

Dim objConn As New OleDbConnection()

objConn.ConnectionString = 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

Page 21: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Shopping Cart Detail LinePublic Class CartLine Private hiddenoid As String Private hiddenpid As String Private hiddenpname As String Private hiddenprice As Double Private hiddenqty As Integer Public Property oid() As String Get oid = hiddenoid End Get Set(ByVal Value As String) hiddenoid = Value End Set End Property Public Property pid() As String Get pid = hiddenpid End Get Set(ByVal Value As String) hiddenpid = Value End Set End Property

Page 22: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Public Property pname() As String Get pname = hiddenpname End Get Set(ByVal Value As String) hiddenpname = Value End Set End Property Public Property price() As Double Get price = hiddenprice End Get Set(ByVal Value As Double) hiddenprice = Value End Set End Property Public Property qty() As Integer Get qty = hiddenqty End Get Set(ByVal Value As Integer) hiddenqty = Value End Set End Property Public ReadOnly Property amount() As Double Get amount = qty * price End Get End PropertyEnd Class

Page 23: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

AddToCart Button Event Procedure

Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) 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

Page 24: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Delete Button Procedure

Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand

myCart.deleteItem(e.Item.ItemIndex)

Session("MyShopCart") = myCart

DataGrid1.DataSource = myCart.CollCartLine

DataGrid1.DataBind()

txtAmount.Text = myCart.CartTotal.ToString

End Sub

Page 25: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

CheckOut ProcedureDim 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("<p align='center'><font size='5'><b>Thank you for shopping at My.Com</b></font></p>")

Session.Abandon()

End Sub

Page 26: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Web 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.

Page 27: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

A Web Service ExampleASPET/TestWebService.ASMX

<%@ WebService Class="CustomerInfo" %>

imports System.Web.Services

imports System

imports System.Data

imports System.Data.Oledb

Public Class CustomerInfo

<webMethod()> public Function GetCname(ByVal CID as String) as String

dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data 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

objDataReader=objComm.executeReader()

objDataReader.read()

return objDataReader("Cname")

end function

Page 28: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Creating a Web Service Using VS

• New Project/ASP.Net Web Service

Page 29: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Web Service Description Language (WSDL)

• A WSDL file is an XML document containing a complete description of the web service. It shows a web service’s name, methods, and parameter types.

• Help page: After entering web service’s URL, a help page is displayed. You can click the Service Description link to see the WSDL file.

Page 30: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Consuming 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: VBNetExample/UseWebService

Page 31: Shopping Cart. ASP.NET State Management Session: User state Application: Application state Cache Static variables: –Public Shared interestRate as Single

Universal Description, Discovery, and Integration (UDDI)

• A directory service for web services.– http://uddi.org