Hi,
I've developed a shopping cart and cannot get the Totals to calculate. Here's the
code - asp.net 1.1.
vb 2003 . Any ideas what's wrong - I get no errors but no
total value either !!!
Code:
%@ Page Language="VB" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">
Function DisplayCart() As System.Data.IDataReader
Dim strConnString As String =
ConfigurationSettings.AppSettings.Get("ConnectionString")
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.CommandBehavior.CloseConnection)
Return dataReader
GetItemTotal()
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
Function GetItemTotal()
Dim ds As DataSet = New System.Data.DataSet
dgCart.DataSource = ds
dgCart.DataBind()
Dim sumTotal As Integer
sumTotal = ds.Tables(0).Compute("SUM(Price(£)))",
String.Empty).ToString
lblTotal.Text = "TOTAL :" & sumTotal
End Function
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("ConnectionString")
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("ConnectionString")
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>