Hi,
I'm working on a checkout page using asp.net 1.1. and vb2003. In my checkout page, I need to
calculate the total of the items currently in the cart. What's the best way to do this ? An
examples would help - thanks. Here's my code for reference :
<%@ Page Language="
VB" Debug="true" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">
Function DisplayCart() As System.Data.IDataReader
Dim strConnString As String =
ConfigurationSettings.AppSettings.Get("ConnectionS tring")
strConnString = String.Format(strConnString,
Server.MapPath("\db\nwguitars.mdb"))
Dim dbConnection As System.Data.IDbConnection = New
System.Data.OleDb.OleDbConnection(strConnString)
Dim queryString As String = "SELECT tblCartItems.intCartitemID,
tblCartItems.intProductID, tblMake.strMake, tblProducts.strProductName, "& _
"tblType.strTypeDetails, tblColour.strColour, tblCartItems.intQuantityOrder,
tblProducts.curSalePrice FROM tblType INNER JOIN "& _
"((tblMake INNER JOIN (tblColour INNER JOIN tblProducts ON tblColour.intColourID
= tblProducts.intColourID) ON tblMake.intMakeID = tblProducts.intMakeID) "& _
"INNER JOIN tblCartItems ON tblProducts.intProductID =
tblCartItems.intProductID) ON tblType.intTypeID = tblProducts.intTypeID WHERE
[tblCartItems].[intCartID] = " & Session("CartID") & " ; "
Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
dbConnection.Open
Dim dataReader As System.Data.IDataReader =
dbCommand.ExecuteReader(System.Data.CommandBehavio r.CloseConnection)
Return dataReader
End Function
Sub Page_Load()
If Not IsPostback Then
CartStatus()
End If
End Sub
Sub CartStatus()
If Session("CartID") Is Nothing Then
pnlShowText.Visible = True
pnlShowItems.Visible = False
Else
pnlShowItems.Visible = True
pnlShowText.Visible = False
dgCart.DataSource = DisplayCart()
dgCart.DataBind()
End If
End Sub
Sub dgCart_Edit(sender As Object, e As DataGridCommandEventArgs)
dgCart.EditItemIndex = e.Item.ItemIndex
dgCart.Datasource = DisplayCart()
dgCart.DataBind()
lblCart.Text = Session("CartID")
lblCart.visible=True
btnSubmit.Visible=False
End Sub
Sub dgCart_Cancel(sender As Object, e As DataGridCommandEventArgs)
dgCart.EditItemIndex = -1
btnSubmit.Visible=True
dgCart.Datasource = DisplayCart()
dgCart.DataBind()
End Sub
Sub dgCart_Update(sender As Object, e As DataGridCommandEventArgs)
Dim strConnString As String =
ConfigurationSettings.AppSettings.Get("ConnectionS tring")
strConnString = String.Format(strConnString,
Server.MapPath("\db\nwguitars.mdb"))
Dim dbConnection As System.Data.IDbConnection = New
System.Data.OleDb.OleDbConnection(strConnString)
Dim intCartitemID As Integer
Dim txtQuantity As TextBox
Dim intQuantity As Integer
intCartitemID = dgCart.DataKeys(e.Item.ItemIndex)
txtQuantity = e.Item.FindControl("txtQuantity")
intQuantity = txtQuantity.Text
Dim strSQL As String = "UPDATE [tblCartItems] SET [intQuantityOrder]=@Quantity
WHERE "& _
"intCartitemID = @intCartitemID"
Dim dbCommand As New OleDbCommand(strSQL, dbConnection)
Dim cmd As New OleDbCommand
dbCommand.Parameters.Add("@Quantity", intQuantity)
dbCommand.Parameters.Add("@intCartitemID", intCartitemID)
dbConnection.Open()
dbCommand.ExecuteNonQuery()
dbConnection.Close()
dgCart.EditItemIndex = -1
dgCart.DataSource = DisplayCart()
dgCart.DataBind()
End Sub
Sub dgCart_Delete(Sender As Object, E As DataGridCommandEventArgs)
Dim strConnString As String =
ConfigurationSettings.AppSettings.Get("ConnectionS tring")
strConnString = String.Format(strConnString,
Server.MapPath("\db\nwguitars.mdb"))
Dim dbConnection As System.Data.IDbConnection = New
System.Data.OleDb.OleDbConnection(strConnString)
Dim intCartitemID As Integer
intCartitemID = dgCart.DataKeys(e.Item.ItemIndex)
Dim cmd As New OleDbCommand
Dim strSQL As String = "DELETE FROM [tblCartItems] WHERE
([tblCartItems].[intCartitemID] = @intCartitemID)"
Dim dbCommand As New OleDbCommand(strSQL, dbConnection)
dbCommand.Parameters.Add("@intCartitemID", intCartitemID)
dbCommand.Parameters("@intCartitemID").Value =
dgCart.DataKeys(CInt(E.Item.ItemIndex))
dbConnection.Open()
dbCommand.ExecuteNonQuery()
dbConnection.Close()
dgCart.DataSource = DisplayCart()
dgCart.DataBind()
End Sub
Sub btnSubmit_Click(sender As Object, e As EventArgs)
Response.Redirect("login.aspx")
End Sub
</script>
<html>
<head>
<link href="\css\liststyle.css" type="text/css" rel="stylesheet" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript" type="text/JavaScript">
//-->
</script>
</head>
<body>
<br />
<form runat="server">
<h2 align="center">View Cart
</h2>
<table height="50" width="400" align="center">
<tbody>
<tr>
<td>
<asp:Panel class="heading" id="pnlShowText" runat="server" Width="390px"
Height="40px">
<p align="center">
Your cart is empty - Please add an item from our shop
</p>
</asp:Panel>
</td>
</tr>
</tbody>
</table>
<table height="50" width="430" align="center">
<tbody>
<tr>
<td width="416">
<asp:Panel id="pnlShowItems" runat="server" Width="400px">
<div align="center">
<asp:DataGrid id="dgCart" runat="server"
OnUpdateCommand="dgCart_Update" OnEditCommand="dgCart_Edit" OnCancelCommand="dgCart_Cancel"
OnDeleteCommand="dgCart_Delete" AutoGenerateColumns="False" ShowFooter="True">
<Columns>
<asp:BoundColumn DataField="intProductID" ReadOnly="True"
HeaderText="ProductID">
<HeaderStyle horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="strMake" ReadOnly="True"
HeaderText="Manufacturer">
<HeaderStyle horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="strProductName"
ReadOnly="True" HeaderText="Product Name">
<HeaderStyle wrap="False"
horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="strTypeDetails"
ReadOnly="True" HeaderText="Product Type">
<HeaderStyle wrap="False"
horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="strColour" ReadOnly="True"
HeaderText="Colour">
<HeaderStyle horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="Quantity">
<HeaderStyle horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container,
"DataItem.intQuantityOrder") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="txtQuantity" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.intQuantityOrder") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="curSalePrice" ReadOnly="True"
HeaderText="Price(#163;)">
<HeaderStyle horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton"
UpdateText="Update" CancelText="Cancel" EditText="Edit Quantity">
<HeaderStyle wrap="False"
horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
<FooterStyle wrap="False"></FooterStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn Text="Delete" CommandName="Delete">
<HeaderStyle wrap="False"
horizontalalign="Center"></HeaderStyle>
<ItemStyle horizontalalign="Center"></ItemStyle>
<FooterStyle wrap="False"></FooterStyle>
</asp:ButtonColumn>
</Columns>
</asp:DataGrid>
<br />
</div>
<div align="center">
<br />
</div>
<div align="center">
<table height="50" width="430" border="0">
<tbody>
<tr>
<td align="middle">
<asp:Button id="btnSubmit"
onclick="btnSubmit_Click" runat="server" cssclass="frmbtn" width="90px" Text="Submit
Order"></asp:Button>
</td>
</tr>
</tbody>
</table>
</div>
Total: <asp:Label id="lblTotal" runat="server"></asp:Label>
</asp:Panel>
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>