我想按日期过滤我的DGV表。我的日期列是日期类型。
例如,如果我选择9月份组合框(PilihBulan)并选择2014年组合框(PilihTahun),当我点击按钮1时,DGV将仅显示2014年9月的列表。
这一次,我尝试使用这样的字符串格式过滤: DV.RowFilter = String.Format(" Tanggal喜欢'%{0}%'"",KotakCari.Text)
这是我的剧本形式: http://i706.photobucket.com/albums/ww64/dhezna/menu/4332400000_zps021d4fbe.jpg
这是我的代码:
Private Sub PilihBulan_SelectedIndexChanged(sender As Object, e As EventArgs) Handles PilihBulan.SelectedIndexChanged
If PilihTahun.Text = "" Then
If PilihBulan.Text = "Januari" Then
KotakCari.Text = "-Jan-"
ElseIf PilihBulan.Text = "Februari" Then
KotakCari.Text = "-Feb-"
ElseIf PilihBulan.Text = "Maret" Then
KotakCari.Text = "-Mar-"
ElseIf PilihBulan.Text = "April" Then
KotakCari.Text = "-Apr-"
ElseIf PilihBulan.Text = "Mei" Then
KotakCari.Text = "-May-"
ElseIf PilihBulan.Text = "Juni" Then
KotakCari.Text = "-Jun-"
ElseIf PilihBulan.Text = "Juli" Then
KotakCari.Text = "-Jul-"
ElseIf PilihBulan.Text = "Agustus" Then
KotakCari.Text = "-Aug-"
ElseIf PilihBulan.Text = "September" Then
KotakCari.Text = "-Sep-"
ElseIf PilihBulan.Text = "Oktober" Then
KotakCari.Text = "-Oct-"
ElseIf PilihBulan.Text = "November" Then
KotakCari.Text = "-Nov-"
ElseIf PilihBulan.Text = "Desember" Then
KotakCari.Text = "-Dec-"
End If
ElseIf PilihTahun.Text = "2014" Then
If PilihBulan.Text = "Januari" Then
KotakCari.Text = "-Jan-2014"
ElseIf PilihBulan.Text = "Februari" Then
KotakCari.Text = "-Feb-2014"
ElseIf PilihBulan.Text = "Maret" Then
KotakCari.Text = "-Mar-2014"
ElseIf PilihBulan.Text = "April" Then
KotakCari.Text = "-Apr-2014"
ElseIf PilihBulan.Text = "Mei" Then
KotakCari.Text = "-May-2014"
ElseIf PilihBulan.Text = "Juni" Then
KotakCari.Text = "-Jun-2014"
ElseIf PilihBulan.Text = "Juli" Then
KotakCari.Text = "-Jul-2014"
ElseIf PilihBulan.Text = "Agustus" Then
KotakCari.Text = "-Aug-2014"
ElseIf PilihBulan.Text = "September" Then
KotakCari.Text = "-Sep-2014"
ElseIf PilihBulan.Text = "Oktober" Then
KotakCari.Text = "-Oct-2014"
ElseIf PilihBulan.Text = "November" Then
KotakCari.Text = "-Nov-2014"
ElseIf PilihBulan.Text = "Desember" Then
KotakCari.Text = "-Dec-2014"
End If
End If
End Sub
Private Sub PilihTahun_SelectedIndexChanged(sender As Object, e As EventArgs) Handles PilihTahun.SelectedIndexChanged
If PilihTahun.Text = "2014" Then
If PilihBulan.Text = "Januari" Then
KotakCari.Text = "-Jan-2014"
ElseIf PilihBulan.Text = "Februari" Then
KotakCari.Text = "-Feb-2014"
ElseIf PilihBulan.Text = "Maret" Then
KotakCari.Text = "-Mar-2014"
ElseIf PilihBulan.Text = "April" Then
KotakCari.Text = "-Apr-2014"
ElseIf PilihBulan.Text = "Mei" Then
KotakCari.Text = "-May-2014"
ElseIf PilihBulan.Text = "Juni" Then
KotakCari.Text = "-Jun-2014"
ElseIf PilihBulan.Text = "Juli" Then
KotakCari.Text = "-Jul-2014"
ElseIf PilihBulan.Text = "Agustus" Then
KotakCari.Text = "-Aug-2014"
ElseIf PilihBulan.Text = "September" Then
KotakCari.Text = "-Sep-2014"
ElseIf PilihBulan.Text = "Oktober" Then
KotakCari.Text = "-Oct-2014"
ElseIf PilihBulan.Text = "November" Then
KotakCari.Text = "-Nov-2014"
ElseIf PilihBulan.Text = "Desember" Then
KotakCari.Text = "-Dec-2014"
End If
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DGV.DataSource = (ds.Tables("LapTransaksiSimpanan"))
If PilihTipe.Text = "" Then
MsgBox("Pilih kategori dulu!", MsgBoxStyle.Information, "Pilih Kategori")
Exit Sub
ElseIf KotakCari.Text = "" Or PilihTipe.Text = "----lihat semua----" Then
Call TampilGrid()
Else
Dim DV As New DataView(DGV.DataSource)
If PilihTipe.Text = "Tanggal" Then
If PilihBulan.Text = "" Then
MsgBox("Pilih bulan dulu!", MsgBoxStyle.Information, "Pilih Bulan")
Exit Sub
ElseIf PilihTahun.Text = "" Then
MsgBox("Pilih tahun dulu!", MsgBoxStyle.Information, "Pilih Tahun")
Exit Sub
Else
DV.RowFilter = String.Format("Tanggal like '%{0}%' ", KotakCari.Text)
DV.RowFilter = Date.Today
DGV.DataSource = DV
DGV.ReadOnly = True
End If
End If
End If
End Sub
答案 0 :(得分:0)
假设您的DataTable
包含Date
值而非String
日期表示,您应该先修复它们(如果尚未确定),那么您应该填充DataTable
,将其绑定到BindingSource
,然后将其绑定到网格。当你想要过滤时,你会这样做:
Dim year As Integer 'Set the year based on one ComboBox.
Dim month As Integer 'Set the month baesd on the other ComboBox, 1-12.
Dim startDate As New Date(year, month, 1)
Dim endDate As New Date(year, month, Date.DaysInMonth(year, month))
Me.BindingSource1.Filter = String.Format("DateColumn >= #{0:M/dd/yyyy}# AND DateColumn <= #{1:M/dd/yyyy}#",
startDate,
endDate)
您可能可以使用BETWEEN
代替,但我总是忘记包含哪些内容以及什么是独占的。