1private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)//Angenommen, der vorherige Kaufbefehl ist ein LinkButton mit dem Befehlsnamen buy
2 {//Taste eingeben, erstellen und zum Warenkorb hinzufügen
3 string pid=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//Erhalten Sie die Haustiernummer
4 if(e.CommandName=="buy")//Wenn der Befehlsname buy ist, bedeutet dies Kaufen
5 {
6 if(Session["bus"]==null)//Überprüfen Sie zunächst, ob der Warenkorb existiert. Wenn er nicht existiert, erstellen Sie ihn.
7 {
8 System.Collections.Hashtable ht=new Hashtable();//Erstellen Sie zunächst eine Hash-Tabelle
9 ht.Add(pid,1);//Es gibt zwei Spalten in der Hash-Tabelle, einen Schlüssel und einen Wert. Wir setzen die Haustiernummer vorne und die Kaufmenge hinten
10 Session["bus"]=ht;//Weisen Sie die Hash-Tabelle dem Session-Objekt zu
11 }
12 else//falls vorhanden
13 {
14 Hashtable ht=(Hashtable)Session["bus"];// Erzwungene Typkonvertierung verwenden und dann Session["bus"] dem Hash-Tabellenobjekt ht zuweisen
15 if(ht[pid]==null)//Wenn die entsprechende ID nicht in der Hash-Tabelle ist,
16 {
17 ht[pid]=1;//Dann direkt auf 1 setzen
18}
19 else//Wenn bereits eine entsprechende ID vorhanden ist
20 {
21 ht[pid]=(int)ht[pid]+1;//Dann nimm das Original heraus und füge 1 hinzu
zweiundzwanzig }
23 Session["bus"]=ht;//Aktualisieren Sie schließlich das Sitzungsobjekt
vierundzwanzig }
25}
26
27}
Die Lesemethode ist einfacher und lautet wie folgt:
this.DataList1.DataSource=(Hashtable)Session["bus"];//Hash-Tabelle direkt als Datenquelle verwenden,
this.DataList1.DataBind();//Aktualisierungsmenge binden
1private void LinkButton1_Click(object sender, System.EventArgs e)
2 {
3
4 foreach(DataListItem dl in this.DataList1.Items)// Durchlaufen Sie die Sammlung
5 {
6 TextBox tb=(TextBox)dl.FindControl("TextBox1");//Suchen Sie das Textfeld
7 int newpid=Convert.ToInt32(tb.Text.ToString());//Suchen Sie den Wert im Textfeld
8
9 Label label1=(Label)dl.FindControl("key");//Suchen Sie das Steuerelement, das das Schlüsselfeld der Hash-Tabelle lädt
10 string pid=label1.Text.ToString();//Erhalte seinen Wert
11
12 Hashtable ht=(Hashtable)Session["bus"];//Weisen Sie das session["bus"]-Objekt der Hash-Tabelle ht zu
13 int oldpid=(int)ht[pid];//Erhalte die ursprüngliche Menge
14
15 if(newpid!=oldpid)//Wenn der Wert im Textfeld nicht der ursprünglichen Zahl entspricht, ersetzen Sie ihn durch den neuen Wert in der Hash-Tabelle
16 {
17 ht[pid]=newpid;
18}
19 Session["bus"]=ht;//Aktualisieren Sie schließlich das Sitzungsobjekt
20}
einundzwanzig }