หลังจากคราวที่แล้ว ได้ทำการสร้าง CheckBox ใน GridView เพื่อแสดงข้อมูลจากฐานข้อมูลแล้ว
[ASP.net+VB] สร้าง CheckBox ใน GridView
มาคราวนี้ ก็จะมาเพิ่มเติมลูกเล่นให้กับ GridView
โดยที่ Header ของ GridView นี้ จะให้สามารถ Select All และ Unselect All ได้
แบบนี้

1. เลือก Edit Header Template เพื่อไปสร้าง Event ให้กับ CheckBox ที่ Header ของ GridView

2. เลือก Event CheckedChange ของ CheckBox ที่เป็น Header Template

3. พิมพ์โค้ดตามนี้้
If CType(GridView1.HeaderRow.FindControl("chkHeader"), CheckBox).Checked Then
Dim i As Integer
For i = 0 To GridView1.Rows.Count - 1
Dim gvRow As GridViewRow = gvTransfer.Rows(i)
CType(gvRow.FindControl("chkItem"), CheckBox).Checked = True
Next
Else
Dim i As Integer
For i = 0 To GridView1.Rows.Count - 1
Dim gvRow As GridViewRow = GridView1.Rows(i)
CType(gvRow.FindControl("chkItem"), CheckBox).Checked = False
Next
End If4. ลองรันดู จะพบว่า ยังไม่สามารถทำได้

5. แต่อย่าเพิ่งตกใจไป เนื่องจาก CheckBox นั้น AutoPostBack มันจะมีค่า Default เป็น False ซึ่งทำให้ เมื่อเราคลิกแล้ว โค้ดที่เขียนจะยังไม่ทำงาน ดังนั้นจึงต้องเปลี่ยน จาก False เป็น True ซะ เพื่อให้การคลิก CheckBox นั้น เกิดการ PostBack (ถ้างงว่า PostBack คืออะไร ให้อ่านที่นี่)

รายละเอียดเพิ่มเติม เกี่ยวกับโค้ดตัวอย่าง
เนื่องจากการสร้าง CheckBox ในครั้งนี้เป็นการสร้างใน GridView ดังนั้นจึงไม่สามารถเรียกใช้งานได้โดยตรง
จึงต้องเรียกผ่านทางฟังก์ชัน FindControl
ซึ่งเริ่มต้น เราต้องหา CheckBox ตัวที่เป็น Header ก่อน โดยใช้คำสั่งว่า
ชื่อGridView.HeaderRow.FindControl[ชื่อ ID ของ control ที่ต้องการค้นหา]
ถ้าพิมพ์แค่นี้จะเป็นแค่ expression ต้องทำการ Convert เป็นประเภทเดียวกับ Control ที่เราหา โดยใช้ฟังก์ชัน CType
เช่น CType(GridView1.HeaderRow.FindControl(“chkHeader”), CheckBox)
สำหรับ CheckBox ที่เป็น Item Template นั้น ใช้คำสั่งว่า
ชื่อGridView.Row(i).FindControl[ชื่อIDของcontrol]



![[ASP.net+VB] การทำ Select All / Unselect All ใน GridView](http://minib0x.com/blog/wp-content/plugins/ttftitles/cache/90aec66b8546bbe958ed62ee949597b7.png)



รบกวนหน่อยค่ะ พอติ๊กไปแล้ว พอรันไป มันก้อเหมือนไม่ได้ติ๊กอ่ะค่ะ
ใส่โค้ดตามนี้เลยอ่ะค่ะ
มันขึ้น error ตรงโค้ดนี้อ่าค่ะ gvTransfer.Rows(i) หมายความว่าไงหรอค่ะ
แร้วจะแก้ไขยังงัย????
ขอบคุณล่วงหน้าค่ะ