Wednesday, December 3, 2008

Tambahkan item dengan value pada combobox (VS 2005 Windows Application)

Gimana sih caranya menambahkan item pada combobox (dropdownlist) di Visual Studio 2005 untuk Windows Application supaya bisa diakses "value" nya??

Seperti kita ketahui (dan mungkin juga merupakan alasan kenapa kamu membaca posting ini), combobox.Items.Add hanya menerima 1 parameter dengan tipe Object. Lalu bagaimana caranya supaya masing-masing item pada combobox memiliki "value", misalnya berisi ID dari record pada tabel master?

Cara yang sudah paling umum digunakan dan dikenal mungkin adalah dengan binding combobox tersebut ke DataTable, semacam ini:

ComboBox3.ValueMember = "EmployeeID"
ComboBox3.DisplayMember = "EmployeeName"
ComboBox3.DataSource = dt
MessageBox.Show(ComboBox3.SelectedValue)
MessageBox.Show(ComboBox3.Text)

Dimana dt adalah DataTable yang isinya dipopulate dari database. Atau bisa juga dt diisi secara manual menggunakan dt.Rows.Add untuk masing-masing row.

Tapi ada kah cara lain selain menggunakan DataTable?? Jawabnya: Ya ada donk masa ya ada lah. Berikut ini akan saya berikan contoh sederhana bagaimana cara menambahkan item pada combobox tanpa binding ke DataTable, dan tetap dapat kita akses "value" nya.

Pertama-tama buatlah sebuah Class seperti berikut:

Public Class ValueTextPair
Private _value As Object
Private _text As String

Public ReadOnly Property Value() As Object
Get
Return _value
End Get
End Property

Public ReadOnly Property Text() As String
Get
Return _text
End Get
End Property

Public Sub New(ByVal value As Object, ByVal text As String)
_value = value
_text = text
End Sub

Public Overrides Function ToString() As String
Return _text
End Function
End Class

Kemudian tambahkan item ke dalam combobox seperti ini:

ComboBox1.Items.Add(New ValueTextPair("A", "Azalea"))
ComboBox1.Items.Add(New ValueTextPair("B", "Bougenville"))
ComboBox1.Items.Add(New ValueTextPair("C", "Catalia"))
ComboBox1.Items.Add(New ValueTextPair("D", "Dahlia"))

Dengan begitu, kita dapat mengakses "Value" maupun "Text" dari item pada combobox yang kita pilih dengan cara seperti ini:

MessageBox.Show(CType(ComboBox1.SelectedItem, ValueTextPair).Value)
MessageBox.Show(CType(ComboBox1.SelectedItem, ValueTextPair).Text)

Alternatif lain adalah dengan melakukan binding combobox dengan ArrayList seperti berikut:

Dim array_list As New ArrayList
array_list.Add(New ValueTextPair("A", "Azalea"))
array_list.Add(New ValueTextPair("B", "Bougenville"))
array_list.Add(New ValueTextPair("C", "Catalia"))
array_list.Add(New ValueTextPair("D", "Dahlia"))
ComboBox2.ValueMember = "Value"
ComboBox2.DisplayMember = "Text"
ComboBox2.DataSource = array_list

Dengan cara ini kita tidak perlu melakukan CType terhadap SelectedItem ke class ValueTextPair, melainkan dapat langsung memanfaatkan property SelectedValue pada combobox seperti ini:

MessageBox.Show(ComboBox2.SelectedValue)
MessageBox.Show(ComboBox2.Text) 'BUKAN ComboBox2.SelectedText

Well, that's it. Semoga tutorial singkat ini bisa berguna buat kamu-kamu yang sedang kebingungan mengenai masalah yang satu ini. Selamat mencoba.

No comments:

Post a Comment