--> Skip to main content
Pelajar Koding

follow us

Vb.Net: Filter Combobox List Di Row Yang Sama Pada Datagridview

Rani mau coba jawab pertanyaan dari joe sath yang ada di artikel http://rani-irsan.blogspot.com/2014/04/vbnet-arrays.html Cuman sebelumnya mau make sure dahulu apa case nya mirip ini: Ada 7 kolom yang bisa diisi dengan nama hari yang dipilih melalui combobox yang ada pada datagridview. Berikut acuan list yang bisa diseleksi pertama kali. Nah klo udah ada yang dipilih dalam row yang serupa tidak muncul lagi dipilihan, seperti gambar di bawah ini: Begitu pula pilihan selanjutnya dan seterusnya dalam 1 row. Tapi filter ini tidak berlaku pada baris baru. Masing-masih row berlaku filter sendiri. Bagaimana cara membuatnya? Baiklah kita mulai dengan membuat UI nya cukup form yang diisi dengan datagridview dengan property Dock = Fill. Pada list Rani tambahkan 1 item berisi string kosong, untuk menjaga kemungkinan dikala row terisi penuh semua ada nilai yang ingin ditukar. Berikut ini code yang dipakai: Public Class Form3   Dim hari As String () = "Senin" , "Selasa" , "Rabu" , "Kamis", _                             "Jum'at" , "Sabtu" , "Minggu"   Function DayExistRow( ByVal row As Integer , _           ByVal DayName As String ) As Boolean    Try     For x As Integer = 0 To DataGridView1.Columns.Count - 1       If IsNothing (DataGridView1.Rows(row).Cells(x).Value) = False And _         x <> DataGridView1.CurrentCell.ColumnIndex Then         If DataGridView1.Rows(row).Cells(x).Value = DayName Then Return True       End If     Next    Catch ex As Exception       MsgBox(ex.Message)    End Try    Return False  End Function   Sub SetListCombo( ByVal row As Integer , ByVal col As Integer )    Dim cmb As New DataGridViewComboBoxCell    cmb = DataGridView1.Rows(row).Cells( "cmb" & (col + 1).ToString)    cmb.Items.Clear()    cmb.Items.Add( "" )    For i As Integer = 0 To 6        If DayExistRow(row, hari(i)) = False Then            cmb.Items.Add(hari(i))        End If    Next  End Sub   Private Sub Form3_Load(sender As Object, e As EventArgs) H andles MyBase .Load    For i As Integer = 0 To 6        Dim cmb As New DataGridViewComboBoxColumn()        cmb.HeaderText = "Column" & (i + 1).ToString        cmb.Name = "cmb" & (i + 1).ToString        cmb.MaxDropDownItems = 7        cmb.Items.Add( "" )        For x As Integer = 0 To 6            cmb.Items.Add(hari(x))        Next        DataGridView1.Columns.Add(cmb)    Next  End Sub  Private Sub DataGridView1_CellBeginEdit(sender As Object, _      e As DataGridViewCellCancelEventArgs) _      Handles DataGridView1.CellBeginEdit    SetListCombo(e.RowIndex, e.ColumnIndex)   End Sub End Class   Click here if you like this article.
Sumber http://rani-irsan.blogspot.com

You Might Also Like:

Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar