1private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)//Supposons que la commande d'achat précédente est un LinkButton avec un nom de commande buy
2 {//Clé, créer et ajouter au panier
3 string pid=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//Obtenir le numéro d'animal
4 if(e.CommandName=="buy")//Si le nom de la commande est buy, cela signifie acheter
5 {
6 if(Session["bus"]==null)//Vérifiez d'abord si le panier existe. S'il n'existe pas, créez-le.
7 {
8 System.Collections.Hashtable ht=new Hashtable();//Créez d'abord une table de hachage
9 ht.Add(pid,1);//Il y a deux colonnes dans la table de hachage, une clé et une valeur Nous mettons le numéro de l'animal à l'avant et la quantité achetée à l'arrière. Le paramètre par défaut est 1.
10 Session["bus"]=ht;//Attribuer la table de hachage à l'objet Session
11 }
12 autre//si existe
13 {
14 Hashtable ht=(Hashtable)Session["bus"];//Utilisez la conversion de type forcée, puis attribuez Session["bus"] à l'objet de table de hachage ht
15 if(ht[pid]==null)//Si l'ID correspondant n'est pas dans la table de hachage,
16 {
17 ht[pid]=1;//Puis réglez-le directement sur 1
18}
19 sinon//S'il existe déjà un identifiant correspondant
20 {
21 ht[pid]=(int)ht[pid]+1;//Puis retirez l'original et ajoutez 1
vingt-deux }
23 Session["bus"]=ht;//Enfin mettre à jour l'objet Session
vingt-quatre }
25}
26
27}
La méthode de lecture est plus simple, comme suit :
this.DataList1.DataSource=(Hashtable)Session["bus"];//Utiliser la table de hachage directement comme source de données,
this.DataList1.DataBind();//Lier la quantité de mise à jour
1private void LinkButton1_Click (expéditeur de l'objet, System.EventArgs e)
2 {
3
4 foreach(DataListItem dl in this.DataList1.Items)//Parcourir la collection
5 {
6 TextBox tb=(TextBox)dl.FindControl("TextBox1");//Rechercher la zone de texte
7 int newpid=Convert.ToInt32(tb.Text.ToString());//Trouver la valeur dans la zone de texte
8
9 Label label1=(Label)dl.FindControl("key");//Trouver le contrôle qui charge le champ clé de la table de hachage
10 string pid=label1.Text.ToString();//Obtenir sa valeur
11
12 Hashtable ht=(Hashtable)Session["bus"];//Attribuer l'objet session["bus"] à la table de hachage ht
13 int oldpid=(int)ht[pid];//Obtenir la quantité d'origine
14
15 if(newpid!=oldpid)//Si la valeur dans la zone de texte n'est pas égale au nombre d'origine, remplacez-la par la nouvelle valeur dans la table de hachage
16 {
17 ht[pid]=newpid;
18}
19 Session["bus"]=ht;//Enfin mettre à jour l'objet Session
20}
vingt-et-un }