1private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)//Предположим, что предыдущая команда покупки представляет собой LinkButton с именем команды buy
2 {//Ключ, создать и добавить в корзину
3 строки pid=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//Получить номер питомца
4 if(e.CommandName=="buy")//Если имя команды buy, это означает покупку
5 {
6 if(Session["bus"]==null)//Сначала проверьте, существует ли корзина. Если она не существует, создайте ее.
7 {
8 System.Collections.Hashtable ht=new Hashtable();//Сначала создадим хеш-таблицу
9 ht.Add(pid,1);//В хеш-таблице есть два столбца: один ключ и одно значение. Мы помещаем номер питомца спереди, а количество покупки сзади. Значение по умолчанию — 1.
10 Session["bus"]=ht;//Назначаем хеш-таблицу объекту Session
11 }
12 еще//если существует
13 {
14 Hashtable ht=(Hashtable)Session["bus"];//Используем принудительное преобразование типов, а затем назначаем Session["bus"] объекту хеш-таблицы ht
15 if(ht[pid]==null)//Если соответствующий идентификатор отсутствует в хеш-таблице,
16 {
17 ht[pid]=1;//Затем напрямую устанавливаем значение 1
18}
19 else//Если соответствующий идентификатор уже есть
20 {
21 ht[pid]=(int)ht[pid]+1;//Затем вынимаем оригинал и добавляем 1
двадцать два }
23 Session["bus"]=ht;//Наконец обновим объект Session
двадцать четыре }
25}
26
27}
Метод чтения проще:
this.DataList1.DataSource=(Hashtable)Session["bus"];//Использовать хэш-таблицу непосредственно в качестве источника данных,
this.DataList1.DataBind();//Привязываем количество обновлений
1private void LinkButton1_Click(отправитель объекта, System.EventArgs e)
2 {
3
4 foreach(DataListItem dl in this.DataList1.Items)//Обход коллекции
5 {
6 TextBox tb=(TextBox)dl.FindControl("TextBox1");//Находим текстовое поле
7 int newpid=Convert.ToInt32(tb.Text.ToString());//Находим значение в текстовом поле
8
9 Label label1=(Label)dl.FindControl("key");//Находим элемент управления, загружающий ключевое поле хеш-таблицы
10 string pid=label1.Text.ToString();//Получаем его значение
11
12 Hashtable ht=(Hashtable)Session["bus"];//Назначаем объект session["bus"] хеш-таблице ht
13 int oldpid=(int)ht[pid];//Получить исходное количество
14
15 if(newpid!=oldpid)//Если значение в текстовом поле не равно исходному числу, замените его новым значением в хеш-таблице
16 {
17 ht[pid]=newpid;
18}
19 Session["bus"]=ht;//Наконец обновим объект Session
20}
двадцать один }