步骤二 购物车的程序开发 ( 1 )删除数据集。切换到设计视图,在【服务器行为】面板中选择“ ByData ”数据集,单击【—】按钮,将“ ByData ”数据集删除。 提示:“ ByData ”数据集用于在 Dreamweaver 中添加数据网络。前面也说过,“ ByGrid ”数据网络的数据源是临时表格,而不是“ ByData ”数据集,所以应将其删除。 ( 2 )添加命名空间及 <script runat="server"> 。切换到代码视图,添加“ System.Data ”和“ System.Data. OleDb ”命名空间,并添加服务器脚本 <script runat="server"> ,定义“ DataTable ”对象的全局变量“ Cptb ”,定义“ DataView ”对象的全局变量“ Cpview ”,如图 83-10 中圆角方框所示。 ( 3 )定义“ CrCpdatatable ”过程,该过程用于建立购物车临时表格,其代码如下所述。 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 (读者可打开【光盘】|【源文件】|【实例 83 】|【 83.1b.txt 】文件,直接复制) 程序说明: 该代码主要为“ Cptb ”定义 5 列数据,一列字段为“ CPID ”,即产品编号,数据类型为字符串;一列字段为“ CPNAME ”,即产品名,数据类型为字符串;一列字段为“ CPDJ ”,即产品单价,数据类型为单精度;一列字段为“ SL ”,即数量,数据类型为整形;一列字段为“ CPSUM ”,即合计,数据类型为双精度;“ Cptb ”临时表格是当用户第一次将商品添加到购物车中时建立的,而且仅仅用一次。 ( 4 )定义“ AddCpby ”过程,用于当客户在首页“ index.aspx ”中单击产品展示的【购买】按钮时,将产品添加到购物车中,该代码如下所述。 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 DreamweaverCP WHERE CPID='" &Trim(Request.QueryString("CPID")) & "'" Cpadapter = new OleDbDataAdapter(Cpstring,conn) Cpdat = New DataSet() Cpadapter.Fill(Cpdat,"DreamweaverCP") dt = Cpdat.Tables("DreamweaverCP") 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 (读者可打开【光盘】|【源文件】|【实例 83 】|【 83.2.txt 】文件,直接复制) 程序说明: 由于这里要链接的数据库为 Access ,所以要用“ OleDbConnection ”作为数据库链接对象;临时表“ Cpdat ”要定义 5 列数据,那么定义“ dr ”为“ Cpdat ”新行的对象后,“ dr ”也就包含了 5 列数据,分别为“ dr ” 5 列数据定义其数据值,再将一行数据添加到临时表“ Cpdat ”中;有关 ASP.NET 对象的知识可参考 ASP.NET 的书。 [page_break] ( 5 )定义“ CpTotal ”过程,用于统计财物车总金额。 Sub CpTotal() Dim i As Integer Dim Cpto As single=0 For i=0 to Cptb.Rows.Count-1 Cpto=Cpto+Cptb.Rows(i)(4) Next CPCOUNT.text=Cpto End Sub (读者可打开【光盘】|【源文件】|【实例 83 】|【 83.3.txt 】文件,直接复制) ( 6 )定义“ ByGrid_Delete ”过程,用于单击【删除】按钮后,删除当前购物。 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 |