摘要:物件導向的購物車(動態新增移除輸入資料)
在偶然的情況,看到Allen大大在他的網站http://www.allenkuo.com/中介紹關於動態產生刪除輸入資料於表格中,發現到原來購物車可以用物件導向的方式設計,而且還蠻有趣的,小喵就決定試試看
不過原來的方式是在ASP.NET 1.1的環境,另外是使用C#的方式來撰寫,小喵對於C#只是勉強看得懂,所以小喵試著使用ASP.NET 2.0的環境搭配VB.NET來寫寫看,以下是撰寫的過程
畫面的安排:
首先安排畫面中兩個輸入選項,分別代表產品代號ProdNo與價格Price,另外加上一個Button處理放入購物車,另外再安排一個GridView來顯示購物車內容,相關內容如下:
購物車項目物件:
接著購物車的項目,項目中有兩個元素,分別是ProdNo與Price。撰寫CartItem物件,兩個屬性ProdNo以及Price
Public Class CartItem
Private mProdNo As String
Private mPrice As Integer
Public Property ProdNo() As String
Get
Return mProdNo
End Get
Set(ByVal value As String)
mProdNo = value
End Set
End Property
Public Property Price() As Integer
Get
Return mPrice
End Get
Set(ByVal value As Integer)
mPrice = value
End Set
End Property
End Class
購物車物件:
接著設計購物車的物件,這邊繼承CollectionBase就可以了
Public Class Cart
Inherits CollectionBase
End Class
宣告購物車變數
接著就在畫面的相關Class中宣告一個Class的全體變數MyCart型態為Cart
Private MyCart As Cart
PageLoad設定MyCart
接著在PageLoad的事件中,宣告給予購物車物件
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MyCart = Session("Cart") '從Session中讀出購物車內容
If MyCart Is Nothing Then '如果購物車還是空的,產生購物車實體
MyCart = New Cart
End If
End Sub
放入購物車
在按鈕Click的事件中,建立一個Item實體,將畫面兩個物件輸入的值放入Item,接著將購物車轉換物件為IList,透過Add函數將購物車Item加入購物車中,接著將購物車放到Session中紀錄,並且呼叫自訂函數將GridView結合購物車
Protected Sub btnAppend_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAppend.Click
Dim Itm As New CartItem '宣告實體化購物車的一個項目
'給予項目的內容
Itm.ProdNo = Me.txtProdNo.Text
Itm.Price = CType(Me.txtPrice.Text, Integer)
'轉換購物車物件為IList,使用IList的Add加入項目
CType(MyCart, IList).Add(Itm)
Session("Cart") = MyCart '將購物車放入Session
BindData() '呼叫自訂函數將購物車結合GridView
End Sub
購物車結合GridView的自訂函數
Public Sub BindData()
Me.GridView1.Visible = True
Me.GridView1.DataSource = MyCart
Me.GridView1.DataBind()
End Sub
到這邊就可以運作放入購物車的動作了
購物車刪除項目設定
接著就是設定購物車刪除物件的處理,設定GridView的Smart Tag,設定編輯資料行→加入Command Field中的刪除→確定
再來設定程式的部份,GridView的RowDeleting事件中,透過IList移除某項目的RemoveAt函式處理
Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
MyCart.RemoveAt(e.RowIndex) '移除項目
BindData() '結合GridView
Session("Cart") = MyCart '放入Session
End Sub
這樣就完成了所有的設定囉
在此特別感謝Allen大大給予的教學,讓小喵初次體會到物件導向有趣的一面,原來購物車可以這樣設計,真好玩
^_^
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |