Jquery datatables ช่องทำเครื่องหมายและ asp.net

ฉันกำลังทำงานกับ DataTables Jquery ที่มีตัวทำซ้ำ asp.net และ 90% ของทุกอย่างทำงานได้ดี ปัญหาคือฉันมีคอลัมน์ช่องทำเครื่องหมาย และหากฉันเลื่อนดูตารางข้อมูลโดยทำเครื่องหมายบางช่องแล้วส่ง ฉันจะได้เฉพาะรายละเอียดหน้าสุดท้ายเท่านั้น ระบบจะลืมหน้าอื่นๆ ทั้งหมดที่ช่องทำเครื่องหมายถูกทำเครื่องหมายไว้

มีเนื้อหาครอบคลุมไม่มากก็น้อยที่นี่:

http://www.datatables.net/forums/discussion/7700/repeater-checkbox-and-paging/p1

อย่างไรก็ตาม ฉันไม่รู้ว่าจะรับข้อมูลนั้นจาก postback ของ asp.net ได้อย่างไร มีใครให้ความกระจ่างว่าฉันจะวนซ้ำผ่าน Repeater และรับช่องทำเครื่องหมายทั้งหมดได้อย่างไร

ขอบคุณ.


person Full Time Skeleton    schedule 04.02.2012    source แหล่งที่มา
comment
ใครก็ได้? ฉันคิดว่าฉันสามารถใช้โซลูชัน postback oncheckchanged บางประเภทได้ แต่มันก็ไม่เหมาะและอาจเลอะเทอะ มีใครรู้วิธีแก้ปัญหาที่ดีกว่าซึ่งจะเชื่อมโยงอย่างดีกับโมเดล postback ของ .net หรือไม่   -  person Full Time Skeleton    schedule 06.02.2012


คำตอบ (2)


ฉันจะเพิ่มตัวจัดการคลิกในแต่ละช่องทำเครื่องหมายที่เพิ่ม/ลบ id ของช่องทำเครื่องหมายที่เลือกในบางรายการ (เช่น เป็นเนื้อหาของฟิลด์ที่ซ่อนอยู่เป็นรายการที่คั่นด้วยเครื่องหมายจุลภาคหรืออะไรที่คล้ายกัน)

เมื่อคุณโพสต์แบบฟอร์ม คุณสามารถอ่านเนื้อหานี้ได้จากคำขอ ["hiddenFieldName"] โดยแยกออกด้วยลูกน้ำและบันทึก

เกี่ยวกับค่าช่องทำเครื่องหมายที่หายไปจากการเปลี่ยนหน้านั้นยังไม่มีวิธีแก้ปัญหาโดยตรง ตัวเลือกของฉันคือการผูกตัวจัดการเหตุการณ์ "เพจ" กับ DataTable - บางอย่างเช่นนี้:

$('#example')
    .bind('page',   function () { populateCheckboxes(  ); })
    .dataTable();  

ฟังก์ชัน populateCheckboxes จะถูกเรียกในการเปลี่ยนแปลงแต่ละครั้ง และที่นี่ คุณสามารถผ่านช่องทำเครื่องหมายทั้งหมดในตารางและตรวจสอบว่าค่าของพวกเขาอยู่ในรายการในช่องที่ซ่อนอยู่หรือไม่

ขออภัย ไม่มีวิธีแก้ปัญหาที่ง่ายกว่านี้ อย่างไรก็ตาม สคริปต์นี้ก็ไม่ได้ซับซ้อนเกินไปเช่นกัน

โจวาน

person Jovan MSFT    schedule 14.02.2012

ใช้แนวทางด้านล่างในโค้ดของคุณ "rptrPayableItems" คือชื่อของรีพีทเตอร์

foreach (RepeaterItem ri in rptrPayableItems.Items){                    
  CheckBox cbPaid = (CheckBox)ri.FindControl("chkbxPayItem");
  if (cbPaid.Checked){       
    //Do your operation here for checked checkbox.
  }
}
person gpr    schedule 29.03.2012
comment
น่าเสียดายที่มันไม่ได้ผล ด้วย Datatables หากคุณได้เพจแล้วเมื่อคุณวนซ้ำผ่านรีพีทเตอร์ในโค้ดด้านหลัง มันจะไม่จำรายการที่ตรวจสอบในหน้าอื่น ๆ - person Full Time Skeleton; 02.04.2012