1private void DataGrid1_ItemCommand(fuente del objeto, System.Web.UI.WebControls.DataGridCommandEventArgs e)//Supongamos que el comando de compra anterior es un LinkButton con un nombre de comando comprar
2 {//Clave, crear y añadir al carrito de la compra
3 cadenas pid=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//Obtener el número de mascota
4 if(e.CommandName=="buy")//Si el nombre del comando es comprar, significa comprar
5 {
6 if(Session["bus"]==null)//Primero verifique si el carrito de compras existe. Si no existe, créelo.
7 {
8 System.Collections.Hashtable ht=new Hashtable();// Primero crea una tabla hash
9 ht.Add(pid,1);// Hay dos columnas en la tabla hash, una clave y un valor. Ponemos el número de mascota al frente y la cantidad de compra al final.
10 Session["bus"]=ht;//Asigna la tabla hash al objeto Session
11 }
12 más//si existe
13 {
14 Hashtable ht=(Hashtable)Session["bus"];// Utilice la conversión de tipo forzada y luego asigne Session["bus"] al objeto de la tabla hash ht
15 if(ht[pid]==null)//Si el ID correspondiente no está en la tabla hash,
16 {
17 ht[pid]=1;// Luego configúrelo en 1 directamente
18}
19 else//Si ya existe un ID correspondiente
20 {
21 ht[pid]=(int)ht[pid]+1;// Luego saca el original y agrega 1
Veintidós }
23 Session["bus"]=ht;//Finalmente actualice el objeto Session
veinticuatro}
25}
26
27}
El método de lectura es más sencillo, como sigue:
this.DataList1.DataSource=(Hashtable)Session["bus"];// Utilice la tabla hash directamente como fuente de datos,
this.DataList1.DataBind();//Vincula la cantidad de actualización
1LinkButton1_Click vacío privado (remitente del objeto, System.EventArgs e)
2 {
3
4 foreach(DataListItem dl en this.DataList1.Items) // Recorre la colección
5 {
6 TextBox tb=(TextBox)dl.FindControl("TextBox1");//Busca el cuadro de texto
7 int newpid=Convert.ToInt32(tb.Text.ToString());//Encuentra el valor en el cuadro de texto
8
9 Etiqueta label1=(Label)dl.FindControl("key");//Encuentra el control que carga el campo clave de la tabla hash
10 cadenas pid=label1.Text.ToString();//Obtener su valor
11
12 Hashtable ht=(Hashtable)Session["bus"];//Asigna el objeto sesión["bus"] a la tabla hash ht
13 int oldpid=(int)ht[pid];//Obtener la cantidad original
14
15 if(newpid!=oldpid)//Si el valor en el cuadro de texto no es igual al número original, reemplácelo con el nuevo valor en la tabla hash
16 {
17 ht[pid]=nuevopid;
18}
19 Session["bus"]=ht;//Finalmente actualice el objeto Session
20}
veintiuno }