DataGrid in DataGrid Event Handles

วันนี้เป็นอีกวันที่เขียนโปรแกรมค่อนข้างเยอะ มีอยู่กรณีหนึ่งที่นานๆผมจะหยิบมาใช้สักที เป็นกรณีที่ไม่ได้ยากอะไรมาก แต่บางครั้งก็ลืมไปบ้างอยู่เหมือนกัน เลยมาเขียนไว้ให้ดูกันสักหน่อย นั่นก็คือ DataGrid Event Handle
การกำหนด DataGrid Event Handles เอง

โดย Event จะเป็นตัวควบคุมเหตุการณ์ต่าง ๆ ของ DataGrid  ซึ่งถ้าเป็น DataGrid ธรรมดาก็สามารถระบุ Event ได้ตามปกติ ในโดยใช้ Event ใน Properties เป็นตัวกำหนด ซึ่ง Visual Studio ก็จะทำการ Handle Event ให้อัตโนมัติ
Properties Windows ในส่วนของ Event Handles

แต่ถ้าเป็น DataGrid ที่ซ้อนอยู่ใน DataGrid Template Column แล้ว DataGrid ใน Template ดันมี Template Column ที่จะต้องทำ Action Command อยู่ด้วยอีก (เป็นชั้นๆ เหมือนที่พยายามเขียนให้เห็นด้านล่างครับ)

   DataGrid 1
      - Template Column
           - DataGrid 2
               - Template Column --> Action Command

ทีนี้แหละครับ Properties Windows ใน Visual Studio ก็ช่วยอะไรไม่ได้
แล้วทำไงดีล่ะที่นี้....ก็ไม่อยากอะไรครับ จัดการทำมันแบบ Manual ด้วยตัวท่านเองเลยครับ

เริ่มแรกด้วยการกำหนด Event ที่ต้องการให้กับ DataGrid ตัวที่อยู่ใน Template Column  (DataGrid2) โดยเลือก Event ตามใจชอบเลยครับว่าอยาก Handle เหตุการณ์ไหนของ DataGrid เช่น

<asp:datagrid id="DataGrid2" runat="server" .... OnItemCommand="DataGrid2_ItemCommand">

โดยใน Event นั้นก็ใส่ Parameter เป็นชื่อของ Method ที่ต้องการให้ไป Call ตอนที่เกิดเหตุการณ์

ในส่วนของ Code behide ก็จัดการเพิ่ม Method นั้นเข้าไปซะ สิ่งที่ควรระวังคือ ต้องเปลี่ยนให้ Method นั้นเป็น public access เพื่อให้หน้า UI มา Call method นี้ได้

public void DataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
....put your code in here.....
}

แล้วก็เขียน Code ที่ต้องการใน method เท่านี้ก็ Handles เหตุการณ์ของ DataGrid ได้แล้วครับ

เฮ้อ....เขียนโปรแกรม Handles ทุกอย่างได้ แต่ผมไม่ชอบให้ใครมา Handles ชีวิตการทำงานของผมมากจนเกินไปครับ...เพราะแค่ที่ทำอยู่ก็เยอะอยู่แล้ว...ไม่ต้องการให้ใครมาทำให้มันยุ่งมากขึ้นไปอีก

สวัสดีครับ

Comments

Popular posts from this blog

Review : HONDA HR-V Part 2

Maximum request length exceeded

Mini review : SIGMA 85mm. f/1.4 EX DG