Subscribe:

Saturday, April 30, 2011

Membuat AutoComplete pada Combobox

Berikut merupakan cara bagaimana sewaktu kita menekan huruf awalan dari setiap kata di-comboxbox akan memunculkan suggestion/autocomplete seperti ini
, saya menggunakan database sample dari Microsoft yaitu AdventureWorks, berikut SQL Query-nya (StoredProcedure):

CREATE PROCEDURE [dbo].[spGetEmployee]
AS
BEGIN
      SELECT A.NationalIDNumber, B.FirstName AS [Name]
      FROM HumanResources.Employee AS A
            INNER JOIN Person.Contact AS B
            ON A.ContactID = B.ContactID
END

Jika ingin memunculkan Name dan NationalIDNumber sekaligus juga dapat menggunakan SQL-Query sbb:
CREATE PROCEDURE [dbo].[spGetEmployee]
AS
BEGIN
      SELECT A.NationalIDNumber, (B.FirstName + ' (' + A.NationalIDNumber + ')') AS [Name]
      FROM HumanResources.Employee AS A
            INNER JOIN Person.Contact AS B
            ON A.ContactID = B.ContactID
END

Berikut code pada Class yang digunakan untuk DataAccess:
    Public Function GetAllEmp() As DataSet
        Dim ds As New DataSet
        Using sqlConn As New SqlConnection(My.Settings.AdventureWorksConnectionString)
            Using sqlDA As New SqlDataAdapter("dbo.spGetEmployee", sqlConn)
                sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure
                sqlDA.Fill(ds)
            End Using
        End Using
        Return ds
    End Function

Code pada Form:
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ds As New DataSet
        ds = objSale.GetAllEmp
        cboEmployee.DataSource = ds.Tables(0)
        cboEmployee.DisplayMember = "Name"
        cboEmployee.ValueMember = "NationalIDNumber"
        cboEmployee.AutoCompleteMode = AutoCompleteMode.SuggestAppend
        cboEmployee.AutoCompleteSource = AutoCompleteSource.ListItems
    End Sub

Silahkan disesuaikan dengan kebutuhan, untuk Query yang menampilkan Name dan National ID akan muncul seperti ini:

Untuk menyimpan, gunakan Kode-nya dengan code:
lblNationalIDNumber.Text = cboEmployee.SelectedValue

ComboBox terdapat 2 property yang digunakan untuk memanipulasi data :
        cboEmployee.DisplayMember = "Name"
        cboEmployee.ValueMember = "NationalIDNumber

-          DisplayMember merupakan text yang ditampilkan
-          ValueMember merupakan text/code dari yang ditampilkan sehingga kita dapat menggunakan .SelectedValue untuk mengambil ID/Code-nya

No comments: