1private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)//Suponha que o comando de compra anterior seja um LinkButton com um nome de comando buy
2 {//Chave, crie e adicione ao carrinho de compras
3 string pid=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//Obtém o número do animal de estimação
4 if(e.CommandName=="buy")//Se o nome do comando for buy, significa comprar
5 {
6 if(Session["bus"]==null)//Primeiro verifique se o carrinho de compras existe. Se não existir, crie-o.
7 {
8 System.Collections.Hashtable ht=new Hashtable();//Primeiro crie uma tabela hash
9 ht.Add(pid,1);//Existem duas colunas na tabela hash, uma chave e um valor Colocamos o número do animal de estimação na frente e a quantidade de compra atrás.
10 Session["bus"]=ht;//Atribuir a tabela hash ao objeto Session
11}
12 senão //se existir
13 {
14 Hashtable ht=(Hashtable)Session["bus"];//Use a conversão de tipo forçada e, em seguida, atribua Session["bus"] ao objeto da tabela hash ht
15 if(ht[pid]==null)//Se o ID correspondente não estiver na tabela hash,
16 {
17 ht[pid]=1;//Depois defina-o como 1 diretamente
18}
19 else //Se já existe um ID correspondente
20 {
21 ht[pid]=(int)ht[pid]+1;//Então retire o original e adicione 1
vinte e dois }
23 Session["bus"]=ht;//Finalmente atualiza o objeto Session
vinte e quatro }
25}
26
27}
O método de leitura é mais simples, como segue:
this.DataList1.DataSource=(Hashtable)Session["bus"];//Use a tabela hash diretamente como fonte de dados,
this.DataList1.DataBind();//Bind www.downcodes.com
Atualizar quantidade
1private void LinkButton1_Click(remetente do objeto, System.EventArgs e)
2 {
3
4 foreach(DataListItem dl in this.DataList1.Items)//Percorrer a coleção
5 {
6 TextBox tb=(TextBox)dl.FindControl("TextBox1");//Encontre a caixa de texto
7 int newpid=Convert.ToInt32(tb.Text.ToString());//Encontre o valor na caixa de texto
8
9 Label label1=(Label)dl.FindControl("key");//Encontre o controle que carrega o campo chave da tabela hash
10 string pid=label1.Text.ToString();//Obtém o valor dele
11
12 Hashtable ht=(Hashtable)Session["bus"];//Atribuir o objeto session["bus"] à tabela hash ht
13 int oldpid=(int)ht[pid];//Obtém a quantidade original
14
15 if(newpid!=oldpid)//Se o valor na caixa de texto não for igual ao número original, substitua-o pelo novo valor na tabela hash
16 {
17 ht[pid]=novopid;
18}
19 Session["bus"]=ht;//Finalmente atualiza o objeto Session
20}
21 }
Fonte: Introdução ao .net... BLOG