|  | 
 
|  
 
 ก็ตามหัวข้อเลยครับ คือเป็น ComboBox แบบหลายหลัก หรือ Multi-Column ซึ่งเสมือนหนึ่งว่าเป็นการดึงตารางข้อมูลมาแสดงผลในตัว MultiColumnComboBox โดยตัวอย่างนี้จะใช้ข้อมูลสมมุติจาก DataTable แล้วให้มันมองเป็น DataView ...
 
 ดาวน์โหลดฟรีชุดติดตั้ง Syncfusion Community (ต้องสมัครสมาชิกเขาก่อนด้วยล่ะครับ) ...
 
 ไฟล์ DLL ที่เป็นพื้นฐานในการใช้งานทั่วไปของ Syncfusion Community รุ่นฟรี ... หากเวอร์ชั่นที่สูงกว่ารุ่นของแอดมิน ต้อง Add Reference เข้ามาใหม่ด้วยครับ
 
  
 มาดูโค้ดต้นฉบับแบบเต็ม ...
 
 คัดลอกไปที่คลิปบอร์ด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) ได้ที่นี่ ...
 
 
 
 
 
 | 
 
xขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึงคุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน  |