|
您好,我在做100例中的实现购物车时,在主页中添加了一个随时查看购物车的链接,代码如下: <td width="153" background="image/navi2_right.gif"><img src="image/top_cart.gif" width="21" height="15" /><u class="STYLE1"><a href="CPBY.aspx">我的购物车</a></u></td> 由于没有向CPBY传递CPID,于是报错: Source Error: Line 27: dt = Cpdat.Tables("DWCP") Line 28: Dim dr As DataRow = Cpbt.NewRow() Line 29: dr(0) = dt.Rows(0)("CPID") Line 30: dr(1) = dt.Rows(0)("CPNAME") Line 31: dr(2) = dt.Rows(0)("CPDJ")
Source File: D:\mysite\cpby.aspx Line: 29 请问怎样修改啊 我在单击一个产品购买时,时正常的 ,订单也能提交,但是我想实现,即使不买产品,也应该显示空的购物车。 一下时购物车的代码: <%@ Page Language="VB" Debug="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script runat="server"> Dim Cpbt As DataTable Dim Cpview as DataView Sub CrCpdatatable() Cpbt = New DataTable() Cpbt.Columns.Add(new DataColumn("CPID",GetType(String))) Cpbt.Columns.Add(new DataColumn("CPNAME",GetType(String))) Cpbt.Columns.Add(new DataColumn("CPDJ",GetType(single))) Cpbt.Columns.Add(new DataColumn("SL",GetType(Int32))) Cpbt.Columns.Add(new DataColumn("CPSUM",GetType(double))) End Sub Sub AddCpbt() Dim cpConn,Cpstring AS String Dim conn AS OleDbConnection Dim Cpadapter AS OleDbDataAdapter Dim Cpdat AS DataSet Dim dt AS DataTable cpConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("dat/dwdat.mdb") conn = New OledbConnection(cpConn) Cpstring = "SELECT CPID,CPNAME,CPDJ from DWCP WHERE CPID='" &Trim(Request.QueryString("CPID")) & "'" Cpadapter = new OleDbDataAdapter(Cpstring,conn) Cpdat = New DataSet() Cpadapter.Fill(Cpdat,"DWCP") dt = Cpdat.Tables("DWCP") Dim dr As DataRow = Cpbt.NewRow() dr(0) = dt.Rows(0)("CPID") dr(1) = dt.Rows(0)("CPNAME") dr(2) = dt.Rows(0)("CPDJ") dr(3) = 1 dr(4) = dr(2) * dr(3) Cpbt.Rows.Add(dr) End Sub Sub CpTotal() Dim i As Integer Dim Cpto As single=0 For i=0 to Cpbt.Rows.Count-1 Cpto=Cpto+Cpbt.Rows(i)(4) Next CPCOUNT.text=Cpto End Sub Sub ByGrid_Delete(sender As Object, e As DataGridCommandEventArgs) Dim dr As DataRow = Cpbt.NewRow() Dim itemCell As TableCell = e.Item.Cells(0) Dim item As String = ItemCell.Text CpView.RowFilter = "CPID='" & item & "'" If CpView.Count > 0 Then CpView.Delete(0) End If CpView.RowFilter = "" CpTotal ByGrid.DataSource = CpView ByGrid.DataBind() End Sub Sub CpUpdate_Click(sender As object, e As EventArgs) Dim i,j As Integer Dim _item As DataGridItem j=0 For i=0 To ByGrid.Items.Count-1 _item = ByGrid.Items(i) Dim CountText As TextBox = _item.FindControl("Sltxt") Cpbt.Rows(i)(3) = CountText.Text Cpbt.Rows(i)(4) = Cpbt.Rows(i)(2) * Cpbt.Rows(i)(3) Next CpTotal ByGrid.DataSource = New DataView(Cpbt) ByGrid.DataBind() End Sub Sub ClearBy_Click(sender As object, e As EventArgs) Dim i As Integer For i=0 to CpView.Count-1 CpView.Delete(0) Next CPCOUNT.text=0 CpView.RowFilter = "" ByGrid.DataSource = CpView ByGrid.DataBind() End Sub Sub Page_Load(Sender As Object,e As EventArgs) If Session("Cpshop") Is Nothing Then CrCpdatatable Session("Cpshop") = Cpbt Else Cpbt = Session("Cpshop") End If Cpview = New DataView(Cpbt) If (Not IsPostBack) Then If Session("USENAME")="" or Session("USENAME")=nothing Then response.Redirect("nologin.htm") End If AddCpbt CpTotal ByGrid.DataSource = Cpview ByGrid.DataBind() End If End Sub Sub NewOrder_Click(sender As object, e As EventArgs) Dim cpConn,Cpstring AS String Dim conn AS OleDbConnection Dim Cpadapter AS new OleDbDataAdapter Dim Cpdat AS DataSet Dim dt AS DataTable Dim Newnow Dim Tystring as string cpConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("dat/dwdat.mdb") conn = New OledbConnection(cpConn) Cpstring = "SELECT * from CPDD" Cpadapter = new OleDbDataAdapter(Cpstring,conn) Dim yy as OleDbCommandBuilder=new OleDbCommandBuilder (Cpadapter) Cpdat = New DataSet() Cpadapter.Fill(Cpdat,"CPDD") DIM i as integer Newnow=now Tystring=session("USENAME")+Cstr(year(Newnow))+iif(len(month(Newnow))=2,cstr(month(Newnow)),"0"+cstr(month(Newnow)))+iif(len(day(Newnow))=2,cstr(day(Newnow)),"0"+cstr(day(Newnow)))+cstr(hour(Newnow))+cstr(Minute(Newnow))+cstr(second(Newnow)) For i=0 to Cpbt.Rows.Count-1 Dim dr As DataRow = Cpdat.Tables("CPDD").NewRow() dr(0) = Tystring dr(1) = Cpbt.Rows(i)("CPID") dr(2) = session("USENAME") dr(3) = Cpbt.Rows(i)("SL") dr(4) = Newnow Cpdat.Tables("CPDD").Rows.Add(dr) next Cpadapter.Update(Cpdat, "CPDD") session("Cpshop")=nothing conn.close response.Redirect("ReEmail.aspx?DDID="+Tystring) End Sub </script> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> <style type="text/css"> <!-- .style1 { color: #FFFFFF; font-weight: bold; font-size: 12pt; } --> </style></head> <body > <div align="center"> <form runat="server"> <table width="500" border="0" cellpadding="2" cellspacing="0"> <tr> <td height="30" bgcolor="#333333"> <div align="left"><span class="style1">我的购物车</span></div></td> </tr> <tr> <td height="58" valign="top"> <ASP:DataGrid AllowPaging="false" AutoGenerateColumns="false" BackColor="white" BorderColor="black" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" id="ByGrid" runat="server" ShowFooter="false" Width="90%" OnDeleteCommand="ByGrid_Delete" MaintainState="false"> <Columns> <asp:BoundColumn DataField="CPID" HeaderText="产品品编号" /> <asp:BoundColumn DataField="CPNAME" HeaderText="产品名" /> <asp:BoundColumn DataField="CPDJ" HeaderText="单价" DataFormatString="{0:c}"/> <asp:TemplateColumn HeaderText="数量"> <ItemTemplate> <asp:TextBox id="Sltxt" width="50" runat="server" Text='<%#Container.DataItem("SL")%>' /> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn DataField="CPSUM" HeaderText="小计(元)" DataFormatString="{0:c}"/> <asp:ButtonColumn ButtonType="LinkButton" CommandName="Delete" HeaderText="删除" Text="删除" Visible="True"/> </Columns> </asp:DataGrid> </td> </tr> <tr> <td height="19" valign="top" align="left" style="font-size:9pt "><strong>合计: <asp:Label ID="CPCOUNT" runat="server" /> </strong></td> </tr> <tr > <td height="23" bgcolor="#F7F7F7"><div align="center"> <p> <asp:Button ID="SxBt" runat="server" Text="刷新购物车" OnClick="CpUpdate_Click" /> <asp:Button ID="ClBt" runat="server" Text="清空购物车" OnClick="ClearBy_Click" /> <asp:Button ID="NewOrder" runat="server" Text="确定下订单" OnClick="NewOrder_Click" /> <input name="ExBt" type="button" id="ExBt" value="退出购物车" OnClick=window.close()"> </p> </div></td> </tr> </table> </form></div> </body> </html>
|