[原创]2个Datagrid和Session做的购物车

Made By Xzlang

  做了模拟的购物车,将数据存储在Session里,然后通过两个DataGrid实现,很简单,主要目的在练习DataGrid的自定义数据和ItemCommand 事件,以及DataView、DataRow和DataColumn.

        在页面上添加两个Datagrid控件和1个label控件.

Dim tb As New DataTable
    
Dim cartview As DataView

    
Private Sub Page_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        
If Not Page.IsPostBack Then
            
Dim table As New DataTable
            table.Columns.Add(
New DataColumn("编号"GetType(Integer)))
            table.Columns.Add(
New DataColumn("产品"GetType(String)))
            table.Columns.Add(
New DataColumn("价格"GetType(String)))
            
Dim dr As DataRow
            dr 
= table.NewRow
            dr(
0= "0001"
            dr(1= "XZLANG"
            dr(2= "110"
            table.Rows.Add(dr)
            dr 
= table.NewRow
            dr(
0= "0002"
            dr(1= "Xuexilin"
            dr(2= "119"
            table.Rows.Add(dr)
            dr 
= table.NewRow
            dr(
0= "0003"
            dr(1= "ZMJ"
            dr(2= "114"
            table.Rows.Add(dr)
            DataGrid1.DataSource 
= table '自定义的数据Datatable绑定
            DataGrid1.DataBind()
        
End If

        
'------------------cart-----------------------
        If Session("cart"Is Nothing Then
            tb.Columns.Add(
New DataColumn("产品"GetType(String)))
            tb.Columns.Add(
New DataColumn("价格"GetType(String)))
            tb.Columns.Add(
New DataColumn("数量"GetType(Integer)))
            tb.Columns.Add(
New DataColumn("总计"GetType(Double)))
            Session(
"cart"= tb
        
Else
            tb 
= Session("cart")
        
End If
        cartview 
= New DataView(tb)
        DataGrid2.DataSource 
= cartview
        DataGrid2.DataBind()
    
End Sub


    
Private Sub DataGrid1_ItemCommand(ByVal source As ObjectByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
        
Dim cnamecell As TableCell = e.Item.Cells(2)
        
Dim pricecell As TableCell = e.Item.Cells(3)
        
Dim cname As String = cnamecell.Text
        
Dim price As Double = Convert.ToDouble(pricecell.Text)
        
If e.CommandName = "addo" Then
            cartview.Sort 
= "产品"
            Dim i As Integer
            i 
= cartview.Find(cname) '在购物车中寻找是否已有该产品

            
If i = -1 Then '如果不存在在购物车中
                Dim dr As DataRow = tb.NewRow '为Datatable 添加DataColumn
                dr(0= cname
                dr(
1= price
                dr(
2= 1
                dr(
3= price
                tb.Rows.Add(dr)
            
Else
                cartview(i)(
"数量"+= 1 '用cartview(i)(字段名称)可以取得第i-1行的数据
                cartview(i)("总计"+= price
            
End If
            cartview.Sort 
= Nothing
            
Dim m As Integer
            
Dim all As Long
            
For m = 0 To cartview.Count - 1
                all 
= all + cartview(m)("总计")
            
Next
            Label1.Text 
= "您购买的产品现合计为" & all.ToString & "" '合计总计字段
        End If
        DataGrid2.DataBind()
posted on 2005-02-03 11:02  雪无止境  阅读(744)  评论(3编辑  收藏  举报