Rani mau coba jawab pertanyaan dari joe sath yang ada di artikel we.com/search?q=vbnet-arrays
Cuman sebelumnya mau make sure dahulu apa case nya mirip ini:
Ada 7 kolom yang mampu diisi dengan nama hari yang diseleksi lewat combobox yang ada pada datagridview.
Nah klo udah ada yang diseleksi dalam row yang sama tidak muncul lagi dipilihan, mirip gambar di bawah ini:
Begitu pula pilihan berikutnya 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 sarat 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) Handles 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
EmoticonEmoticon