Tip!!! การเขียนโปรแกรมอ้างอิงกรณี Gridview ซ้อน Gridview
เมื่อทำการเขียนโปรแกรมแล้วเราจะพบปัญหาว่าการเขียนโดยใช้ Gridview1 มี Template Field ที่มี Gridview2 อยู่ในนั้น และใน Gridview2 ก็จะมี Button อยู่ในนั้นด้วย ปัญหาที่เกิดขึ้นจะเจอว่า ถ้าต้องการกดปุ่มดังกล่าวใน Gridview2 แล้วจะอ้างอิงมายัง Gridview1 จะทำอย่างไรดี
Protected Sub btn_Button1_Click(sender As Object, e As System.EventArgs)
'-- สร้างปุ่มขึ้นมาเพื่อทำการรองรับปุ่มที่ถูกกดมาจริง
Dim btn_Button1 As Button = CType(sender, Button)
'-- สร้างตัวแปร Gridview1_Row เพื่อดูว่าปุ่ม Button1 นั้นอยู่ใน Row ไหน
Dim GridView1_Row As GridViewRow = CType(btn_Button1.NamingContainer, GridViewRow)
'-- สร้างตัวแปร Gridview1 เพื่อรับ Gridview ใน Gridview1_Row นี้
Dim Gridview1 As GridView = CType(GridView1_Row.NamingContainer, GridView)
'-- สร้างตัวแปร lbl รับ Label Object ใน Gridview1_Row
Dim lbl As Label = CType(GridView1_Row.FindControl("lbl"), Label)
End Sub
ในปัญหาเดียวกัน ถ้ามีการซ้อนกันของ Gridview มากกว่า 1 ชั้นก็สามารถอ้างอิงกลับไปได้เรื่อยๆเช่นกัน
Protected Sub btn_Button1_Click(sender As Object, e As System.EventArgs)
'-- สร้างปุ่มขึ้นมาเพื่อทำการรองรับปุ่มที่ถูกกดมาจริง
Dim btn_Button1 As Button = CType(sender, Button)
'-- สร้างตัวแปร Gridview1_Row เพื่อดูว่าปุ่ม Button1 นั้นอยู่ใน Row ไหน
Dim GridView1_Row As GridViewRow = CType(btn_Button1.NamingContainer, GridViewRow)
'-- สร้างตัวแปร Gridview1 เพื่อรับ Gridview ใน Gridview1_Row นี้
Dim Gridview1 As GridView = CType(GridView1_Row.NamingContainer, GridView)
'-- สร้างตัวแปร lbl รับ Label Object ใน Gridview1_Row
Dim lbl As Label = CType(GridView1_Row.FindControl("lbl"), Label)
End Sub
ในปัญหาเดียวกัน ถ้ามีการซ้อนกันของ Gridview มากกว่า 1 ชั้นก็สามารถอ้างอิงกลับไปได้เรื่อยๆเช่นกัน
Comments
Post a Comment