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")//إذا كان اسم الأمر شراء فهذا يعني شراء
5 {
6 if(Session["bus"]==null)// تحقق أولاً من وجود عربة التسوق، وإذا لم تكن موجودة، فقم بإنشائها.
7 {
8 System.Collections.Hashtable ht=new Hashtable();// قم أولاً بإنشاء جدول تجزئة
9 ht.Add(pid,1);// يوجد عمودان في جدول التجزئة، مفتاح واحد وقيمة واحدة نضع رقم الحيوان الأليف في المقدمة وكمية الشراء في الخلف، الإعداد الافتراضي هو 1
10 Session["bus"]=ht;// قم بتعيين جدول التجزئة لكائن الجلسة
11 }
12 آخر // إذا كان موجودا
13 {
14 Hashtable ht=(Hashtable)Session["bus"];// استخدم تحويل النوع القسري، ثم قم بتعيين جلسة ["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;//أخيرًا قم بتحديث كائن الجلسة
أربعة وعشرون }
25}
26
27}
أما طريقة القراءة فهي أسهل وهي كالتالي:
this.DataList1.DataSource=(Hashtable)Session["bus"];// استخدم جدول التجزئة مباشرة كمصدر للبيانات،
this.DataList1.DataBind();// ربط كمية التحديث
1 زر 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 تسمية label1=(Label)dl.FindControl("key");// ابحث عن عنصر التحكم الذي يقوم بتحميل الحقل الرئيسي لجدول التجزئة
10 string pid=label1.Text.ToString();//احصل على قيمته
11
12 Hashtable ht=(Hashtable)Session["bus"];// قم بتعيين كائن الجلسة ["bus"] لجدول التجزئة ht
13 int oldpid=(int)ht[pid];// احصل على الكمية الأصلية
14
15 if(newpid!=oldpid)//إذا كانت القيمة الموجودة في مربع النص لا تساوي الرقم الأصلي، فاستبدلها بالقيمة الجديدة في جدول التجزئة
16 {
17 ht[pid]=newpid;
18}
19 Session["bus"]=ht;//أخيرًا قم بتحديث كائن الجلسة
20}
واحد وعشرون }