[ASP.net+VB] การทำ Select All / Unselect All ใน GridView

หลังจากคราวที่แล้ว ได้ทำการสร้าง CheckBox ใน GridView เพื่อแสดงข้อมูลจากฐานข้อมูลแล้ว

[ASP.net+VB] สร้าง CheckBox ใน GridView

มาคราวนี้ ก็จะมาเพิ่มเติมลูกเล่นให้กับ GridView

โดยที่ Header ของ GridView นี้ จะให้สามารถ Select All และ Unselect All ได้

แบบนี้

aspnet-gridview-selectall-03

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

  3. เลือก Event CheckedChange ของ CheckBox ที่เป็น Header Template
  4. aspnet-gridview-selectall-02

  5. พิมพ์โค้ดตามนี้้
  6. 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 If

  7. ลองรันดู จะพบว่า ยังไม่สามารถทำได้
  8. aspnet-gridview-selectall-03-1

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


รายละเอียดเพิ่มเติม เกี่ยวกับโค้ดตัวอย่าง

เนื่องจากการสร้าง 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]

ฝึกงาน #13

[23.04.2009]

วันนี้ก็ยังทำอะไรมากไม่ได้ เนื่องจากข้อมูลต่างๆ ยังไม่ลงตัวดี

สิ่งที่ทำในวันนี้ก็คือ

  • ทำ Select All / Unselect All
  • ลอง Connect Database ที่เป็น MS Access

ตอนเย็น ช่วง Meeting รายงาน Progress

ได้รู้จัก PostBack

PostBack คือ การส่งค่ากลับคืนมาของหน้าเว็บเพจ
IsPostBack เป็นคุณสมบัติของ Page ซึ่งทำหน้าที่บอกว่า หน้าเว็บปัจจุบันนี้มีการส่งค่ากลับคืนมาหรือไม่ ซึ่งมันจะ return ค่าเป็น True/False โดยที่การโหลดหน้าเว็บครั้งแรกจะไม่มีการคืนค่า

ดังนั้น Page Load ครั้งแรกสุด IsPostBack จะมีค่า False

อ่านเพิ่มเติมเกี่ยวกับ PostBack (มีตัวอย่างให้ดูด้วย)  คลิก

ข้อแตกต่างระหว่าง HTML กับ Javascript

HTML เป็น server site ส่วน JavaScript เป็น client site

ความรู้ที่ได้ในวันนี้

  • การทำ Select All / Un Select All  ที่หัวตารางของ GridView (ต่อจากคราวที่แล้ว)


aspnet-gridview-selectall-03

วิธีทำ คลิกเลย

[ASP.net+VB] สร้าง CheckBox ใน GridView

วันนี้จะมาทำ CheckBox ให้อยู่ใน GridView แบบนี้

aspnet-gridview-20

  1. เตรียม Database ให้พร้อม (ในที่นี้ใช้ Nwind.mdb)
  2. aspnet-gridview-01

  3. เลือก control ที่ชื่อ GridView
  4. aspnet-gridview-02

  5. จะได้แบบนี้
  6. aspnet-gridview-03

  7. เลือก New data source
  8. aspnet-gridview-04

  9. เลือก ประเภทของฐานข้อมูล ในที่นี้ใช้ Access
  10. aspnet-gridview-05

  11. เลือกไฟล์ฐานข้อมูลที่ต้องการผูกติดกับ GridView
  12. aspnet-gridview-06

  13. จากนั้นกด Next
  14. aspnet-gridview-07

  15. เลือก Column, Table ที่ต้องการ
  16. aspnet-gridview-09

  17. ลอง Test Query ดู เพื่อความมั่นใจ
  18. aspnet-gridview-10

  19. เมื่อติดต่อกับฐานข้อมูลเรียบร้อยแล้ว ลองรันดูจะได้ผลลัพธ์แบบนี้
  20. aspnet-gridview-12

  21. เริ่มขั้นตอนการสร้าง CheckBox ด้านหน้า โดยการคลิก Edit column
  22. aspnet-gridview-13

  23. เลือก Add TemplateField
  24. aspnet-gridview-14

  25. เลือก Edit Template
  26. aspnet-gridview-11

  27. เลือก Item Template ของ Column[0]
  28. aspnet-gridview-15

  29. ลาก CheckBox มา ( Item Template เป็นส่วนที่แสดงข้อมูล)
  30. aspnet-gridview-16

  31. เลือก Header Template ของ Column[0]
  32. aspnet-gridview-17

  33. ลาก CheckBox มาใส่ (ส่วน Header คือส่วนหัวของตาราง GridView)
  34. aspnet-gridview-18

  35. เสร็จแล้วก็กด End Template Editing
  36. aspnet-gridview-19

  37. ลองรันดู จะได้ผลลัพธ์ ตามต้องการ คือมี CheckBox อยู่ด้านหน้าของแต่ละแถว

  38. aspnet-gridview-20

วิธีทำวันนี้ ต้องขอบคุณ พี่ดิวและพี่มิซซู (-/|\-) อิอิ

อ่านเพิ่มเติม (มีตัวอย่างเป็น c# อย่างละเอียดด้วย)  คลิก

[ASP.net+VB] การสร้าง Pop-up Calendar

วันนี้จะทำ Pop Up Calendar แบบนี้

aspnet-popupcalendar-10

เมื่อคลิกที่ปุ่ม ก็จะโชว์ปฏิทิน แบบนี้

aspnet-popupcalendar-11

เตรียมพร้อมก่อนใช้งาน

  1. ก่อนอื่น ต้องดาวโหลด Control Set จากเว็บนี้  eworldui.net เมื่อดาวโหลดมาเสร็จแล้วก็ install โลดดดดดดด
  2. aspnet-popupcalendar-01

  3. เมื่อ install เสร็จแล้วก็เปิด Visual Studio ขึ้นมา มองไปที่ toolbox แล้ว คลิกขวา เลือก Add Tab เพื่อสร้าง Tab สำหรับเก็บ Control ของ eWorldUI (จะไม่ Add Tab ก็ได้นะ แต่ทำไว้เพื่อความสะดวกในการใช้งานในครั้งต่อๆ ไป)
  4. aspnet-popupcalendar-02

  5. พิมพ์ชื่อ Tab ว่า  eWorldUI

  6. aspnet-popupcalendar-03

  7. เลือก Tab eWorldUI แล้วคลิกขวา Choose Items
  8. aspnet-popupcalendar-04

  9. เลือก Items ที่มี Namespac ว่า eWorld.UI ทั้งหมด (คลิก Namespace ก็ได้เพื่อให้เรียงตามตัวอักษร) จากนั้นกด OK

  10. aspnet-popupcalendar-05

  11. จะเห็นว่าที่ Toolbox ของเราจะมีเพิ่มขึ้นมามากมาย (แต่ในที่นี้จะแนะนำแค่ CalendarPopup อย่างเดียว อิอิ)

  12. aspnet-popupcalendar-06

  13. ต่อมา ไปที่ Solution Explorer คลิกขวาที่ชื่อ Project จากนั้นเลือก Add Reference

  14. aspnet-popupcalendar-07

  15. เลือก Excentrics World Controls

  16. aspnet-popupcalendar-08

  17. แค่นี้ก็พร้อมใช้งานแล้ว


ใช้งาน CalendarPopup (Design)

  1. ลาก CalendarPopup มาจาก Toolbox จะได้ดังนี้
  2. aspnet-popupcalendar-09

  3. ลอง Run ดูจะได้แบบนี้
  4. aspnet-popupcalendar-10

  5. ลองคลิกที่ปุ่ม … จะได้แบบนี้
  6. aspnet-popupcalendar-11

  7. โอ้ววว เสร็จแล้ว pop up calendar ที่ต้องการ

(ไม่ต้องเขียนเองให้เมื่อยตุ้ม…)


ใช้งาน CalendarPopup (Coding)

หลังจากมี Design ของ CalendarPopup แล้ว ต่อมาเราก็จะมาเขียนโค้ดเพื่อนำไปใช้งาน


เป้าหมายคือ เมื่อเลือกวันที่เสร็จแล้ว กด OK ให้โชว์วันที่ที่เลือกไว้ (ง่ายๆ ก่อน)

  1. หน้า Design เพิ่มเติมนิดหน่อยแบบนี้
  2. aspnet-popupcalendar-12

  3. Double Click ที่ปุ่ม OK เพื่อเขียนโค้ด
  4. Dim myDate As Date
    myDate = CalendarPopup1.SelectedDate
    lblDate.Text = myDate.ToString()

  5. ลอง Run ดู จะได้แบบนี้
  6. aspnet-popupcalendar-13

ไม่เพียงแค่โชว์ Date ได้เท่านั้น ลอง CalendarPopup1.SelectedDate แล้วจุด ดูจะขึ้น Property มา สามารถเลือกได้ทั้ง Day, Month, Year, DayOfWeak เป็นต้น

ลองเล่นดูเพิ่มเติม และแล้ววันนี้ก็สร้าง Pop Up Calendar ได้ตามความต้องการ

ต้องขอบคุณพี่ดิว สำหรับคำแนะนำ ^^”