--------------------------------------------------| Welcome to My blog | Hope You Enjoy The Blog | :) ---------------------------------------------------------------------

2018/08/11

ComboBox VB Net 2017

Jadi ceritanya saya sedang mengerjakan sebuah project point of sales menggunakan vb 2017 dengan database mysql. Salah satu kasus yang saya temui adalah saat menggunakan combobox untuk menampilkan data(grup customer) dari database dimana data customer ber relasi dengan tabel grup customer(id dan nama grup). algoritma sederhana dari proses ini : data customer dan grup customer diambil dari tabel di database, kemudian data customer ditampilkan di datagrid, sedangkan data grup disimpan di comboBox. 

kemudian saya buat event on double click di data grid view untuk menampilkan data customer beserta grup yang di set padanya berdasarkan id grup yang ter taut pada data customer, namun apa yang terjadi ialah comboBox tidak langsung bereaksi untuk menampilkan info grup berdasarkan id grup yang di assign. saya menggunakan kode : 

CmbGrupCust.SelectedValue = IdGrupSelected

setelah searching google, ternyata banyak yang mengalami hal yang sama, apakah ini bug atau memang ada cara lain untuk menampilkan data di ComboBox berdasarkan selected Id saya belum tahu persis, tapi saya akhirnya menggunakan solusi array dinamis untuk menampilkan info grup yang tersimpan di comboBox.

pertama deklarasikan array tanpa dimensi
Dim arrNamaGrup() As String
    Dim arrIdGrup() As Integer

Kemudian pada form load atau pada saat mengambil data dari tabel ke comboBox:
While pmbc.Read()
                    jgrup = jgrup + 1
                    ReDim Preserve arrNamaGrup(jgrup)
                    ReDim Preserve arrIdGrup(jgrup)
                    CmbGrup.Items.Add(New With {.nama_grup = pmbc.Item(1).ToString, .value = 
pmbc.Item(0).ToString})
                    arrNamaGrup(jgrup - 1) = pmbc.Item(1).ToString
                    arrIdGrup(jgrup - 1) = CInt(pmbc.Item(0).ToString)
                End While
ReDim Preserve berfungsi untuk menambah ruang array dengan jumlah total sama dengan jgrup
kemudian pada saat menampilkan informasi detil customer, pada kasus saya event on celldoubleClick di dgCust:

IdGrupSelected = CInt(dgCust.CurrentRow.Cells(7).Value.ToString)

                For c As Integer = 0 To arrIdGrup.Length - 1
                    If arrIdGrup(c) = idGrup Then
                        CmbGrup.SelectedIndex = c
                        Exit For
                    End If
                Next

dengan demikian kita meng-set data yang harus ditampilkan oleh comboBox dengan properti SelectedIndex, dan berhasil tidak seperti menggunakan selectedValue yang kadang jalan kadang tidak.



No comments:

Post a Comment