March 23, 2009

Membuat Fungsi SelectedIndexChanged pada ComboBox di DataGridView


Pada artikel sebelumnya, telah di jelaskan bagaimana menambah control ComboBox pada DataGridView. Sekarang bagaimanakah membuat method SelectedIndexChange pada ComboBox tersebut.
Untuk control ComboBox yang diambil dari ToolBox method SelectedIndexChange sudah tersedia, Biasa nya fungsi ini di gunakan untuk menampilkan data/informasi jika nilai dari control ini dipilih.
Sedangkan untuk ComboBox pada DataGridView kita harus melakukan beberapa langkah dengan coding.
Pertama ketik Sintaks dibawah ini :

Private Sub NamaGrade_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
        Try
             Dim comboBox1 As ComboBox = CType(sender, ComboBox)
            'Ketikkan sintaks untuk menampilkan data yang di inginkan
 Catch ex As Exception
             MsgBox(ex.Message)
        End Try
End Sub

Lalu untuk mengaktifkan fungsi diatas, ikuti langkah dibawah.
Masih pada jendela Code, pilih control DataGridView pada ComboBox Class Name lalu pilih Method Name nya EditingControlShowing
Dan ketikkan sintaks dibawah ini :

Private Sub DataGridViewTTB_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridViewTTB.EditingControlShowing
        Dim cb As ComboBox = TryCast(e.Control, ComboBox)
        If cb IsNot Nothing Then
            RemoveHandler cb.SelectedIndexChanged, AddressOf NamaGrade_SelectedIndexChanged
            Select Case DataGridViewTTB.CurrentCell.ColumnIndex
                Case 1 'Posisi / nomor kolom control ComboBox pada DatagridView
                    AddHandler cb.SelectedIndexChanged, AddressOf NamaGrade_SelectedIndexChanged
            End Select
        End If
End Sub

Dengan ini kita bisa menambahkan method untuk control-control yang kita buat pada DataGridView, seperti method Leave pada TextBox. Ketikkan Sintaks dibawah ini.

Private Sub Jumlah_leave(ByVal sender As Object, ByVal e As EventArgs)
        Try
            Dim a, b, c, d, z As Integer
            Dim total As Double
            a = DataGridViewTTB.CurrentRow.Cells(4).Value
            b = DataGridViewTTB.CurrentRow.Cells(5).Value
            c = DataGridViewTTB.CurrentRow.Cells(6).Value
            d = DataGridViewTTB.CurrentRow.Cells(7).Value
            z = a * b * c * d
            total = z / 5085.31
            DataGridViewTTB.CurrentRow.Cells(8).Value = total
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

Lalu pada method EditingControlShowing seperti di atas tambahkan sintaks dibawah ini.
Dim tb As TextBox = TryCast(e.Control, TextBox)
        If tb IsNot Nothing Then
            RemoveHandler tb.Leave, AddressOf Jumlah_leave
            Select Case DataGridViewTTB.CurrentCell.ColumnIndex
                Case 7 'Posisi / nomor kolom control TextBox pada DatagridView
                    AddHandler tb.Leave, AddressOf Jumlah_leave
            End Select
        End If

Semoga bermanfaat..
Wassalam

13 comments:

kia said...

kerenn..krenn....
akhirnya nambah juga postingannya....

Anonymous said...

Genial dispatch and this enter helped me alot in my college assignement. Thanks you seeking your information.

Anonymous said...

tq untuk postingannya..
aku mau tanya dunk,, kalo mau nampilin data dari gridview ke comboBox bagaimana ya caranya??? terima kasih sebelumnya.. :D

Junindar, MVP said...

Maksudnya gmana ya..
apa di dalam datagridview nya ada combobox gitu??

batista said...

ini sangat membatu, memang sering error masalah combobox datagridview ini ..

Anonymous said...

Mas,, klo pake dataset kok cuma bisa sekali aja ya ganti comboboxnya setelah itu error.

Anonymous said...

Mas
gmn cara menampilkan data yg sudah ada di datagridview ke dalam combobox ?

misalnya :
saya punya 2 table:
table a berisi level user
table b berisi data user

dan saya punya 1 datagridview yg berisi kolom2 userid,nama & level
kolom level itu ingin saya tampilkan di combobox
sedangkan di combobox itu sendiri sewaktu menambah / merubah data telah berisi data dari table a.

saya ingin jika mouseclick di datagridview, combobox itu berisi level sesuai dgn yg ada di datagridview tersebut.
saya sudah coba dgn syntax :
combobox1.text = dguser.currentrow.cells(2).value
tapi combobox kosong sedangkan textbox userid & nama terisi sesuai dgn data yg diclick.

Terima kasih.

Unknown said...

Mas
Tanya Donk,,gmna ya caranya membuat sebuah denah yang dinamys dengan vb.net,,saya pengenya denah terrsebut terhubung ke database,,jadi kalo mouseHover gtu kluar Tooltips Yang Tersimpan didatabase

12passWorkingClass said...

Mohon di perjelas di bagian :
Case 1 'Posisi / nomor kolom control ComboBox pada DatagridView

Terimkasih

12passWorkingClass said...

Mohon diperjelas di bagian :
Case 1 'Posisi / nomor kolom control ComboBox pada DatagridView

Terimakasih

Anonymous said...

mas mau tanya, gimana cara membuat combobox memiliki 2 atau lebih kolom kemudian kombo box ini di masukkan ke dalam grid jadi, combobox berada dalam gridview, dan comboboxnya memiliki lebih dari satu columns

is Lyric said...

maaf mungkin ini melenceng dari combobox, mas bisa gk kita buat koneksi database ke crystal report dengan coding di vb.net, oh ia koneksinya menggunakan ODBC, tapi ODBCnya tidak melalui setting manual, namaun pake coding

Hemat S said...

Terima kasih atas penjelasannya. saya mau tanya Bagaimana caranya menampilkan data barang, dengan banyak satuan,pada datagridview. mis
anggaplah form penjualan barang, saat kita pilih kode barang akan muncul nama barang dan harga,lalu setelah isi qty, langsung pindah ke satuan,disini langsung tampil di comboboxdatagridview sesuai satuan masing masing barang.
Mohon penjelasannya. terima kasih sebelumnya