ProjectForStudy

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

[แบ่งปัน] VB.Net การค้นหาข้อมูลใน DataGridView โดยใช้ BindingSource

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

    [LV.9]ConquerorII

    47

    กระทู้

    1117

    โพสต์

    7887

    เครดิต

    KingUnicorn

    Rank: 6Rank: 6

    เครดิต
    7887
    Ticket
    4392
    จิตพิสัย
    3495

    Merciful MemberInstructor

    สวัสดีทุกท่าน ผมขอแบ่งปันวิธีการค้นหาข้อมูลใน DataGridView โดยใช้ BindingSource



    โดยปกติการค้นหาทั่วไปก็จะเขียน ดังนี้
    1. รับค่าพารามิเตอร์การค้นหาใน Textbox
    2. ส่งต่อให้ Sql command string
    3. เปิดการเชื่อมต่อฐานข้อมูล
    4. ทำการ Query ฐานข้อมูล
    5. ส่งกลับมาแสดงใน DataGridView ผ่าน Datasource

    ที่สำคัญถ้าเราเขียนไว้ใน Event TextChanged หละก็ติดต่อฐานข้อมูลทุกครั้งที่มีการพิมพ์ตัวอักษร

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

    ทั้งนี้ขึ้นอยู่กับการออกแบบการเขียนโปรแกรมของเราเหมือนกันที่มีผลต่อ Server หรือ Network system
    ซึ่งตัวอย่างโปรแกรมที่ผมจะนำเสนอวิธีคิดอีกรูปแบบ คือ
    1. โหลดข้อมูลเข้ามา ให้กับ DataSet หรือ DataTable
    2. ส่งข้อมูลให้กับ BindingSource
    3. ใช้คุณสมบัติของ BindingSource ที่มี Filter เป็นตัวค้นหาข้อมูลและแสดงผลใน DataGridView แทน
    ถึงแม้จะสั่งให้โค้ดทำงานใน Event TextChanged เป็นร้อยครั้ง แต่การดึงข้อมูลจากฐานข้อมูลเกิดขึ้นเพียงครั้งแรกครั้งเดียว
    เพราะทุกครั้งที่จะค้นหาข้อมูล จะถูกค้นหาจาก BindingSource แทนฐานข้อมูล

    ซึ่งข้อดีของมันก็คือ
    1. ช่วยลดภาระการทำงานของ Server ลง
    2. ในเมื่อ Server ทำงานน้อยลง ส่งผลทำให้ Network system ก็ไม่ติดขัดตามไปด้วย

    ส่วนข้อเสียคือ
    ไม่เหมาะสำหรับฐานข้อมูลที่มีความถี่ Transaction สูง ที่มีการเพิ่ม ลบ แก้ไขอยู่ตลอดเวลา (ในระดับ วินาที หรือนาที เป็นต้น)

    ตัวอย่างโปรแกรม (ค้นหาผ่าน BindingSource)
    ผมขอใช้รูปตัวอย่างของ C# ประกอบนะครับ เนื่องจากหน้าตาเหมือนกัน
    Link C# : http://www.projectforstudy.com/thread-2015-1-1.html









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


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

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

    x

    คะแนน

    จำนวนผู้เข้าร่วม 1จิตพิสัย +10 ย่อ เหตุผล
    vbpossible + 10 ถูกใจ

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

  • อารมณ์วันนี้
    ง่วง
    4 วันที่แล้ว
  • เช็คชื่อแล้ว: 424 วัน

    [LV.9]ConquerorII

    49

    กระทู้

    527

    โพสต์

    973

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    973
    Ticket
    115
    จิตพิสัย
    858
    MMee007 โพสต์ 2019-4-4 00:20:54 | ดูโพสต์ทั้งหมด
    ขอบคุณคับ
  • อารมณ์วันนี้
    ง่วง
    2019-5-27 11:30
  • เช็คชื่อแล้ว: 34 วัน

    [LV.5]JuniorI

    15

    กระทู้

    90

    โพสต์

    203

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    203
    Ticket
    65
    จิตพิสัย
    138
    dododohua โพสต์ 2019-4-4 09:32:12 | ดูโพสต์ทั้งหมด
    ขอบคุณคร้าบบบ
  • อารมณ์วันนี้
    แฮปปี้
    2020-8-5 09:06
  • เช็คชื่อแล้ว: 60 วัน

    [LV.6]JuniorII

    5

    กระทู้

    107

    โพสต์

    299

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    299
    Ticket
    42
    จิตพิสัย
    257
    pok โพสต์ 2019-4-6 07:01:33 | ดูโพสต์ทั้งหมด

    ขอบคุณคับ
  • อารมณ์วันนี้
    ง่วง
    2020-7-14 19:57
  • เช็คชื่อแล้ว: 52 วัน

    [LV.5]JuniorI

    9

    กระทู้

    104

    โพสต์

    73

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    73
    Ticket
    24
    จิตพิสัย
    49
    dsk โพสต์ 2019-4-7 00:58:21 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    ไร้อารมณ์
    2020-7-1 11:17
  • เช็คชื่อแล้ว: 68 วัน

    [LV.6]JuniorII

    12

    กระทู้

    188

    โพสต์

    1655

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    1655
    Ticket
    1579
    จิตพิสัย
    76
    soulideth โพสต์ 2019-4-9 15:14:25 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 08:30
  • เช็คชื่อแล้ว: 551 วัน

    [LV.9]ConquerorII

    2

    กระทู้

    476

    โพสต์

    2005

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    2005
    Ticket
    942
    จิตพิสัย
    1063
    phetsamone โพสต์ 2019-4-10 10:38:52 | ดูโพสต์ทั้งหมด
    ขอบคุนมาก
  • อารมณ์วันนี้
    ขี้เกียจ
    2019-9-3 20:06
  • เช็คชื่อแล้ว: 235 วัน

    [LV.7]JuniorIII

    15

    กระทู้

    418

    โพสต์

    1142

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    1142
    Ticket
    368
    จิตพิสัย
    774
    anuyutza1995 โพสต์ 2019-4-10 13:18:51 | ดูโพสต์ทั้งหมด
  • อารมณ์วันนี้
    ง่วง
    2020-8-3 15:12
  • เช็คชื่อแล้ว: 100 วัน

    [LV.6]JuniorII

    2

    กระทู้

    149

    โพสต์

    133

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    133
    Ticket
    17
    จิตพิสัย
    116
    sack โพสต์ 2019-4-11 08:08:26 | ดูโพสต์ทั้งหมด
    เยี่ยม ขอบคุณครับ
  • อารมณ์วันนี้
    แฮปปี้
    2020-6-5 06:19
  • เช็คชื่อแล้ว: 84 วัน

    [LV.6]JuniorII

    5

    กระทู้

    85

    โพสต์

    483

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    483
    Ticket
    202
    จิตพิสัย
    281
    naiach โพสต์ 2019-4-24 05:29:41 | ดูโพสต์ทั้งหมด
    ขอบคุณค่ะ
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

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

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

    GMT+7, 2020-8-15 11:45 , Processed in 0.060986 second(s), 36 queries .

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

    © 2001-2013 Comsenz Inc.

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