thongkorn โพสต์ 2020-6-8 19:13:53

[VB.NET] การใช้งาน MultiColumnComboBox Control ด้วยของฟรีจาก Syncfusion Community

http://www.g2gnet.com/webboard/images/vbnet/syncfusion/multicolumncombobox.png


ก็ตามหัวข้อเลยครับ คือเป็น ComboBox แบบหลายหลัก หรือ Multi-Column ซึ่งเสมือนหนึ่งว่าเป็นการดึงตารางข้อมูลมาแสดงผลในตัว MultiColumnComboBox โดยตัวอย่างนี้จะใช้ข้อมูลสมมุติจาก DataTable แล้วให้มันมองเป็น DataView ...

ดาวน์โหลดฟรีชุดติดตั้ง Syncfusion Community (ต้องสมัครสมาชิกเขาก่อนด้วยล่ะครับ) ...

ไฟล์ DLL ที่เป็นพื้นฐานในการใช้งานทั่วไปของ Syncfusion Community รุ่นฟรี ... หากเวอร์ชั่นที่สูงกว่ารุ่นของแอดมิน ต้อง Add Reference เข้ามาใหม่ด้วยครับ
http://www.g2gnet.com/webboard/images/vbnet/syncfusion/syncfusionrefbase.png

มาดูโค้ดต้นฉบับแบบเต็ม ...
Imports Syncfusion.Windows.Forms.Tools

Public Class frmCBMulticol

    Private Sub frmCBMulticol_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      Call ComboBoxDataBinding()
    End Sub

    Sub ComboBoxDataBinding()
      '// Setup MultiColumnComboBox
      With MultiColumnComboBox1
            .MultiColumn = True
            .ShowColumnHeader = True
            .AlphaBlendSelectionColor = Color.LightBlue
            .DropDownWidth = 620
            .DropDownStyle = ComboBoxStyle.DropDownList
            .Style = Syncfusion.Windows.Forms.VisualStyle.Office2007
            .Office2007ColorTheme = Syncfusion.Windows.Forms.Office2007Theme.Black
      End With
      '//
      Dim dt As New Data.DataTable
      ' / เพิ่มหลัก (Columns) หรือฟิลด์ จำนวน 6 หลัก
      With dt
            .Columns.Add("EmployeePK", GetType(Integer))    '<-- Index = 0
            .Columns.Add("EmployeeID", GetType(String))   '<-- Index = 1
            .Columns.Add("EmployeeName", GetType(String))   '<-- Index = 2
            .Columns.Add("Position", GetType(String))         '<-- Index = 3
            .Columns.Add("Department", GetType(String))   '<-- Index = 4
            .Columns.Add("HireDate", GetType(Date))             '<-- Index = 5
      End With
      ' / เพิ่มรายการข้อมูล (Record) เรียงตามลำดับฟิลด์
      With dt
            .Rows.Add("1", "EMP00001", "นายทองก้อน ทับทิมกรอบ", "Managing Director", "Management", "01/01/2555")
            .Rows.Add("2", "EMP00002", "นายบุญห่อ พ่อรวย", "ช่างซ่อมบำรุง", "Technical", "01/06/2555")
            .Rows.Add("3", "EMP00003", "นางสาวกุ๊กกิ๊ก น่ารักที่สุด", "เลขา", "Management", "25/02/2555")
            .Rows.Add("4", "EMP00004", "นางบัวผัน ฝันเฟื่อง", "หัวหน้าบัญชี", "บัญชี", "11/11/2555")
            .Rows.Add("5", "EMP00005", "หนูมาลี มีลูกแมวเหมียว", "ธุรการ", "ธุรการ", "13/04/2555")
      End With
      Dim view As DataView = New DataView(dt)
      ' DATASOURCE is DATAVIEW
      With MultiColumnComboBox1
            .DataSource = view
            .DisplayMember = "EmployeeName"
            .ValueMember = "EmployeePK"
      End With
    End Sub

    Private Sub MultiColumnComboBox1_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles MultiColumnComboBox1.SelectedValueChanged
      Dim c As ComboBoxBaseDataBound = CType(MultiColumnComboBox1, ComboBoxBaseDataBound)
      If Not (c.SelectedIndex = -1) Then
            Dim drv As DataRowView = CType(c.Items(c.SelectedIndex), DataRowView)
            '// อ่านค่า EmployeePK หากต้องการใช้ EmployeeID ก็เปลี่ยน 0 ให้เป็น 1 คือเรียงตาม Index ของ Column ใน DataTable
            c.Text = drv.Item(0).ToString()
      End If
    End Sub
End Class


ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...




komenservice โพสต์ 2020-6-9 09:46:22

แก้ไขครั้งสุดท้ายโดย komenservice เมื่อ 2020-6-9 10:56

ขอบพระคุณครับ อาจารย์

แต่ผม โหลดมาเป็น Ver 18 ครับ รุ่นทดลองใช้ 30 วันครับ

ทดสอบแล้ว ใช้งานได้ครับ แต่ใช้ได้ 30 วันครับ

MMEE007 โพสต์ 2020-7-23 23:29:21

ขอบพระคุณครับ

g2gsoftuser โพสต์ 2022-10-25 15:04:50

ขอบคุณครับ
หน้า: [1]
ดูในรูปแบบกติ: [VB.NET] การใช้งาน MultiColumnComboBox Control ด้วยของฟรีจาก Syncfusion Community