private void DataGrid
_ItemCommand(object source
System
Web
UI
WebControls
DataGridCommandEventArgs e)//假設前面購買命令是一個命令名為buy的LinkButton
{//關鍵
建立和加如購物車
string pid=this
DataGrid
DataKeys[e
Item
ItemIndex]
ToString();//取出寵物編號
if(e
CommandName==
buy
)//如果命令名是 buy
說明是購買
{
if(Session[
bus
]==null)//先就得檢查購物車是否存在
如果不存在
就建立呗
{
System
Collections
Hashtable ht=new Hashtable();//先建立一個哈希表
ht
Add(pid
);//哈希表中的兩個列
一個key
一個value
我們就前面放寵物編號
後面放購買數量好了
預設置為1
Session[
bus
]=ht;//將哈希表賦值給Session對象
}
else//如果存在的話
{
Hashtable ht=(Hashtable)Session[
bus
];//使用強制類型轉換
再將Session[
bus
]賦值給哈希表對象 ht
if(ht[pid]==null)//如果哈希表中對應的ID沒有
{
ht[pid]=
;//那就直接給他設為 1
}
else//如果已經有對應的ID
{
ht[pid]=(int)ht[pid]+
;//那麼就把原來的取出來再加上 1
}
Session[
bus
]=ht;//最後再更新Session 對象
}
}
}
而讀取的方法更簡單了
如下:
this
DataList
DataSource=(Hashtable)Session[
bus
];//直接利用哈希表作為數據源
this
DataList
DataBind();//綁定一下
更新數量
private void LinkButton
_Click(object sender
System
EventArgs e)
{
foreach(DataListItem dl in this
DataList
Items)//遍歷集合
{
TextBox tb=(TextBox)dl
FindControl(
TextBox
);//找到文本框
int newpid=Convert
ToInt
(tb
Text
ToString());//查出文本框裡面的值
Label label
=(Label)dl
FindControl(
key
);//找到裝載哈希表key字段的那個控件
string pid=label
Text
ToString();//把他的值拿出來
Hashtable ht=(Hashtable)Session[
bus
];//把session[
bus
]對象賦值給哈希表 ht
int oldpid=(int)ht[pid];//求得原來的數量
if(newpid!=oldpid)//如果文本框裡的值不等於原來的數量
就用新的更換到哈希表中的值
{
ht[pid]=newpid;
}
Session[
bus
]=ht;//最後再更新Session 對象
}
}
From:http://tw.wingwit.com/Article/program/net/201311/12913.html