如何在VB中过滤我的DGV日期?

时间:2014-09-12 02:31:33

标签: vb.net datagridview

我想按日期过滤我的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

1 个答案:

答案 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代替,但我总是忘记包含哪些内容以及什么是独占的。