ProjectForStudy

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

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

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    แฮปปี้
    2 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 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)









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



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

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

    x

    คะแนน

    จำนวนผู้เข้าร่วม 2จิตพิสัย +7 ย่อ เหตุผล
    bunloa + 2 ถูกใจ
    kannisa1908 + 5 ถูกใจ

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

  • อารมณ์วันนี้
    ไร้อารมณ์
    2019-10-2 15:55
  • เช็คชื่อแล้ว: 68 วัน

    [LV.6]JuniorII

    0

    กระทู้

    84

    โพสต์

    156

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    156
    Ticket
    110
    จิตพิสัย
    46
    maphone12 โพสต์ 2019-5-7 13:58:40 | ดูโพสต์ทั้งหมด
    ขอบคุญ
  • อารมณ์วันนี้
    สู้
    2019-5-7 15:28
  • เช็คชื่อแล้ว: 3 วัน

    [LV.2]BeginnerI

    0

    กระทู้

    8

    โพสต์

    11

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    11
    Ticket
    8
    จิตพิสัย
    3
    sonicroute โพสต์ 2019-5-7 15:34:40 | ดูโพสต์ทั้งหมด

    ขอบคุณครับ
  • อารมณ์วันนี้
    ง่วง
    2019-7-11 13:09
  • เช็คชื่อแล้ว: 4 วัน

    [LV.2]BeginnerI

    1

    กระทู้

    6

    โพสต์

    8

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    8
    Ticket
    0
    จิตพิสัย
    8
    evilkjpat โพสต์ 2019-5-8 12:20:56 | ดูโพสต์ทั้งหมด
    เข้ามาศึกษา ขอบคุณครับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 11:50
  • เช็คชื่อแล้ว: 665 วัน

    [LV.9]ConquerorII

    38

    กระทู้

    762

    โพสต์

    2515

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    2515
    Ticket
    696
    จิตพิสัย
    1819

    Expert Online

    artxyy14 โพสต์ 2019-5-25 18:57:40 | ดูโพสต์ทั้งหมด
    Thank you. ^^
  • อารมณ์วันนี้
    สู้
    2019-6-26 23:20
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    0

    กระทู้

    3

    โพสต์

    13

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    13
    Ticket
    5
    จิตพิสัย
    8
    sarawutmk2540 โพสต์ 2019-6-26 23:20:52 | ดูโพสต์ทั้งหมด
    ขอบคุณคับ
  • อารมณ์วันนี้
    เหนื่อย
    2020-7-21 10:31
  • เช็คชื่อแล้ว: 157 วัน

    [LV.7]JuniorIII

    4

    กระทู้

    209

    โพสต์

    789

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    789
    Ticket
    222
    จิตพิสัย
    567
    supean โพสต์ 2019-7-8 08:09:47 | ดูโพสต์ทั้งหมด
    ขอบคุณครั้บ
  • อารมณ์วันนี้
    แฮปปี้
    2019-8-22 16:16
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    0

    กระทู้

    4

    โพสต์

    10

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    10
    Ticket
    1
    จิตพิสัย
    9
    skychat โพสต์ 2019-8-22 16:20:07 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 13:33
  • เช็คชื่อแล้ว: 299 วัน

    [LV.8]ConquerorI

    6

    กระทู้

    351

    โพสต์

    2252

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    2252
    Ticket
    539
    จิตพิสัย
    1713
    xjkpxko โพสต์ 2019-8-26 18:53:10 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    แฮปปี้
    2020-6-20 14:59
  • เช็คชื่อแล้ว: 171 วัน

    [LV.7]JuniorIII

    0

    กระทู้

    199

    โพสต์

    761

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    761
    Ticket
    92
    จิตพิสัย
    669
    eung โพสต์ 2019-8-30 14:07:43 | ดูโพสต์ทั้งหมด
    ขอบคุญ
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

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

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

    GMT+7, 2020-8-15 11:10 , Processed in 0.053417 second(s), 34 queries .

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

    © 2001-2013 Comsenz Inc.

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