ตัวอย่างนี้จะแก้ปัญหาเป็นหลัก
ตัวควบคุมรายการเช่น CheckBoxList ไม่สามารถรับรายการการดำเนินงานปัจจุบันได้โดยตรงเมื่อมีการยกเหตุการณ์ SelectedIndexChanged
และเลือกประเภทการดำเนินการใด? หรือยกเลิกการเลือก?
-
รหัสตัวอย่างจะเป็นดังนี้:
1 โมฆะที่ได้รับการป้องกัน Page_Load (ผู้ส่งวัตถุ EventArgs e)
2 {
3 ถ้า (!IsPostBack)
4 {
5 // ผูกการดำเนินการ CheckBoxList
6 this.hidtxt_CheckBoxSelectValue.Value = "";//ครั้งแรกที่ CheckBoxList ถูกผูกไว้
7}
8}
9
10 โมฆะที่ได้รับการป้องกัน CheckBoxList1_SelectedIndexChanged (ผู้ส่งวัตถุ EventArgs e)
11 {
12 //hidtxt_CheckBoxSelectValue เก็บค่าคลิกสุดท้าย
13 // หากเป็น Page_Load ครั้งที่แล้ว hidtxt_CheckBoxSelectValue จะว่างเปล่า
14 สตริง sOld = this.hidtxt_CheckBoxSelectValue.Value.Trim();
15
16 สำหรับ (int i = 0; i < CheckBoxList1.Items.Count; i++)
17 {
18 //สถานการณ์แรก
19 //ไม่ได้ถูกเลือกตั้งแต่แรกแต่ถูกเลือกอยู่ในปัจจุบัน
20 //จากนั้นการดำเนินการคลิกนี้คือ: เลือกและคลิกที่รายการนี้
21 ถ้า (CheckBoxList1.Items[i].Selected)
ยี่สิบสอง {
23 if (!sOld.Contains(CheckBoxList1.Items[i].Value.Trim() + ","))
ยี่สิบสี่ {
25 //ดำเนินการประมวลผลที่เกี่ยวข้อง
26 Response.Write("นี่คือการดำเนินการเลือก ค่าข้อความของช่องทำเครื่องหมายที่ดำเนินการคือ " + CheckBoxList1.Items[i].Text + "ค่ามูลค่าคือ " + CheckBoxList1.Items[i].Value);
27 i = CheckBoxList1.Items.Count;
28 }
29 }
30 อื่น ๆ
31 {
32 //กรณีที่สอง
33 // เดิมถูกเลือกไว้แต่ไม่ได้ถูกเลือกในปัจจุบัน
34 // การคลิกในครั้งนี้คือ: ยกเลิกการเลือกและคลิกที่รายการนี้
35 ถ้า (sOld.Contains(CheckBoxList1.Items[i].Value.Trim() + ","))
36 {
37 //ดำเนินการประมวลผลที่เกี่ยวข้อง
38 Response.Write("นี่คือการดำเนินการยกเลิกการเลือก ค่าข้อความของช่องทำเครื่องหมายที่ดำเนินการคือ " + CheckBoxList1.Items[i].Text + "ค่าค่าคือ " + CheckBoxList1.Items[i].Value);
39 i = CheckBoxList1.Items.Count;
40}
41 }
42 }
43
44 //บันทึกค่าที่เลือกทั้งหมดในครั้งนี้
45 สตริง sNew = "";
46 foreach (รายการ ListItem ใน CheckBoxList1.Items)
47 {
48 ถ้า (รายการเลือก)
49 sใหม่ += " " + item.Value.Trim() + ",";
50 }
51 this.hidtxt_CheckBoxSelectValue.Value = sNew;//เตรียมการเปรียบเทียบครั้งต่อไป
52 }
http://www.cnblogs.com/freeliver54/archive/2007/01/11/617988.html