ProjectForStudy

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 524|ตอบกลับ: 12

[แบ่งปัน] การสร้างรายการเลือกจาก DataGridView

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 22:52
  • เช็คชื่อแล้ว: 645 วัน

    [LV.9]ConquerorII

    47

    กระทู้

    1111

    โพสต์

    7810

    เครดิต

    KingUnicorn

    Rank: 6Rank: 6

    เครดิต
    7810
    Ticket
    4351
    จิตพิสัย
    3459

    Merciful MemberInstructor

    สวัสดีท่านสมาชิก ProjectFor Study ทุกๆ ท่าน
    ก่อนจะสิ้นปี 2562 ผมมีอีกหนึ่งตัวอย่างมาแบ่งปันคือ

    การเลือกรายการจาก Controls DataGridView
    ซึ่งส่วนมากเราจะคุ้นเคยกับ ComboBox, ListBox, CheckBox, RadioButton หรือ Control อื่นที่ผมไม่ได้ยกตัวอย่างเอาไว้

    ซึ่งการเลือกข้อมูลผ่าน Controls DataGridView แน่นนอนว่าเราต้องวาง Controls ไว้บนฟอร์ม
    (ครั้งแรกผมก็มีคำถาม แล้วจะทำให้มันยุ่งยากทำไม เลือก Controls ตามรายชื่อข้างบนมาลากวางในฟอร์มเดียวกันแล้วผูกการดึงข้อมูลมาวาง ง่ายกว่าตั้งเยอะ)

    แต่ในที่นี้ผมก็พบข้อดีของการเลือกผ่าน DataGridView มันก็มีข้อดีคือ ข้อมูลที่มันมีความสัมพันธ์กัน มันจะเลือกได้ง่ายและรวดเร็ว โดยเฉพาะผู้ใช้งานจะชอบมาก
    และลดข้อผิดพลาดการเลือกข้อมูลที่ไม่สัมพันธ์กัน

    ตัวอย่างข้อมูลที่มีความสัมพันธ์กันเช่น
    1. แขวง/ตำบล , เขต/อำเภอ , จังหวัด , รหัสไปรษณีย์
    2. ตำแหน่ง , แผนก , ส่วน , ฝ่าย เป็นต้น

    ซึ่งถ้าเรา (ผู้เขียนโปรแกรมทำการเขียนแยกเพื่อให้ผู้ใช้งานเลือกทีละอย่าง) พบว่ามีข้อเสียคือ
    1. ผู้ใช้งานจะป้อนข้อมูลได้ช้ากว่า
    2. อาจจะเกิดข้อผิดพลาดจากการป้อนข้อมูลของผู้ใช้งาน
    3. จากข้อ 2 ผู้เขียนโปรแกรม ก็จะทำการป้องกันทีละสเต็ป เช่น ให้เลือกจังหวัดก่อน หลังจากนั้นค่อยเลือกอำเภอ และข้อมูลอื่น ๆ ตามมา
    ผมคิดดูแล้วมันเพิ่มทั้งงานของผู้ใช้งานเองและผู้เขียนโปรแกรมเป็นอย่างมาก

    ตัวอย่าง การเลือกรายการจาก DataGridView


    เลือกคำนำหน้าชื่อ


    เลือกเพศ


    เลือกที่อยู่ (พิมพ์ค้นหา แล้วดับเบิ้ลคลิ๊กครั้งเดียวได้ข้อมูลมาทั้งหมด)
    สำหรับการค้นหา ผมใช้ BindingSource http://www.projectforstudy.com/thread-2016-1-1.html


    ตัวอย่างข้อมูลที่เลือกข้อมูลเสร็จแล้ว


    จากการเลือกข้อมูล คำนำหน้าชือ, เพศ , ที่อยู่ แล้วอย่างนี้มันก็ต้องมี 3 ฟอร์มสิใช่หรือไม่?
    (คำตอบ) ไม่ใช่ มันคือฟอร์มเดียวกัน เน้นการเขียนโค้ดแบบ Run time สำหรับการควบคุมให้ได้ผลลัพธ์ที่ต้องการ
    เพราะถ้าแยกฟอร์มผมก็ไม่ทำครับ มันเพิ่มงาน 555 ผมจะใช้วิธีการจัดกลุ่มข้อมูลที่เหมือนกันแล้วรวมให้อยู่ในฟอร์มเดียวกัน

    ตัวอย่างโค้ดในแต่ละปุ่มเพิ่มเรียกรายการขึ้นมาแสดงแล้วเลือก
    1. ' คำนำหน้าชื่อ
    2.     Private Sub BtTitleName_Click(sender As Object, e As EventArgs) Handles btTitleName.Click

    3.         Dim frm As New FParameter()

    4.         frm.SQL_String = "SELECT Title_ID FROM tblTitle_Name"
    5.         frm.DGV_Caption = New String() {"คำนำหน้าชื่อ"}
    6.         frm.Form_Category = Form_Category.Title_Name
    7.         frm.ShowDialog()

    8.         If Not String.IsNullOrEmpty(frm.Field1) Then
    9.             txtTitleName.Text = frm.Field1.ToString()
    10.         End If

    11.     End Sub

    12.     ' เพศ
    13.     Private Sub BtGender_Click(sender As Object, e As EventArgs) Handles btGender.Click

    14.         Dim frm As New FParameter()

    15.         frm.SQL_String = "SELECT GenderID FROM tblGender"
    16.         frm.DGV_Caption = New String() {"เพศ"}
    17.         frm.Form_Category = Form_Category.Gender
    18.         frm.ShowDialog()

    19.         If Not String.IsNullOrEmpty(frm.Field1) Then
    20.             txtGender.Text = frm.Field1.ToString()
    21.         End If

    22.     End Sub

    23.     ' ที่อยู่
    24.     Private Sub BtAddress_Click(sender As Object, e As EventArgs) Handles btAddress.Click

    25.         Dim frm As New FParameter()

    26.         frm.SQL_String = "SELECT Location_ID, Sub_district, District, Province, Postal_Code FROM tblPostal_Code"
    27.         frm.DGV_Caption = New String() {"รหัส", "แขวง/ตำบล", "เขต/อำเภอ", "จังหวัด", "รหัสไปรษณีย์"}
    28.         frm.Form_Category = Form_Category.Address
    29.         frm.ShowDialog()

    30.         If Not String.IsNullOrEmpty(frm.Field2) Then
    31.             txtAddress1.Text = frm.Field2.ToString()
    32.             txtAddress2.Text = frm.Field3.ToString()
    33.             txtAddress3.Text = frm.Field4.ToString()
    34.             txtAddress4.Text = frm.Field5.ToString()
    35.         End If

    36.     End Sub
    คัดลอกไปที่คลิปบอร์ด


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



    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x

    คะแนน

    จำนวนผู้เข้าร่วม 1จิตพิสัย +2 ย่อ เหตุผล
    bunloa + 2 ซึ้ง

    ดูบันทึกคะแนน

  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 01:45
  • เช็คชื่อแล้ว: 422 วัน

    [LV.9]ConquerorII

    48

    กระทู้

    525

    โพสต์

    954

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    954
    Ticket
    110
    จิตพิสัย
    844
    MMee007 โพสต์ 2019-12-28 00:06:42 | ดูโพสต์ทั้งหมด
    ขอบพระคุณคับ
  • อารมณ์วันนี้
    สู้
    2020-7-8 09:57
  • เช็คชื่อแล้ว: 242 วัน

    [LV.8]ConquerorI

    0

    กระทู้

    254

    โพสต์

    484

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    484
    Ticket
    354
    จิตพิสัย
    130
    pathu โพสต์ 2019-12-30 08:53:30 | ดูโพสต์ทั้งหมด
    ขอบคุนครับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 01:45
  • เช็คชื่อแล้ว: 422 วัน

    [LV.9]ConquerorII

    48

    กระทู้

    525

    โพสต์

    954

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    954
    Ticket
    110
    จิตพิสัย
    844
    MMee007 โพสต์ 2019-12-30 18:13:37 | ดูโพสต์ทั้งหมด

    ขอบพระคุณคับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 21:37
  • เช็คชื่อแล้ว: 662 วัน

    [LV.9]ConquerorII

    38

    กระทู้

    759

    โพสต์

    2490

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    2490
    Ticket
    684
    จิตพิสัย
    1806

    Expert Online

    artxyy14 โพสต์ 2020-1-8 15:52:10 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    สู้
    2020-1-20 13:51
  • เช็คชื่อแล้ว: 3 วัน

    [LV.2]BeginnerI

    0

    กระทู้

    14

    โพสต์

    14

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    14
    Ticket
    11
    จิตพิสัย
    3
    logitechdeen โพสต์ 2020-1-20 14:20:09 | ดูโพสต์ทั้งหมด
    ขอบพระคุณ​ครับ
    สวัสดีจ้า
  • อารมณ์วันนี้
    สู้
    2020-1-29 10:06
  • เช็คชื่อแล้ว: 5 วัน

    [LV.2]BeginnerI

    0

    กระทู้

    27

    โพสต์

    21

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    21
    Ticket
    14
    จิตพิสัย
    7
    aksoft โพสต์ 2020-1-28 10:56:18 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    แฮปปี้
    2020-4-21 13:49
  • เช็คชื่อแล้ว: 42 วัน

    [LV.5]JuniorI

    3

    กระทู้

    74

    โพสต์

    345

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    345
    Ticket
    118
    จิตพิสัย
    227
    araban โพสต์ 2020-1-31 10:56:52 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    เหนื่อย
    2020-4-8 18:14
  • เช็คชื่อแล้ว: 46 วัน

    [LV.5]JuniorI

    5

    กระทู้

    86

    โพสต์

    266

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    266
    Ticket
    50
    จิตพิสัย
    216
    anna โพสต์ 2020-2-3 16:19:46 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    ง่วง
    2020-7-14 19:57
  • เช็คชื่อแล้ว: 52 วัน

    [LV.5]JuniorI

    9

    กระทู้

    104

    โพสต์

    73

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    73
    Ticket
    24
    จิตพิสัย
    49
    dsk โพสต์ 2020-2-8 18:48:18 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

    รายละเอียดเครดิต

    ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|ProjectForStudy  

    GMT+7, 2020-8-10 00:02 , Processed in 0.045711 second(s), 27 queries .

    Powered by Discuz! X3.2 R20150609, Rev.38

    © 2001-2013 Comsenz Inc.

    ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้