我正在尝试使用此代码过滤日期时间列
Private Sub RowFilter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtUser.TextChanged, dtpEnd.ValueChanged, dtpStart.ValueChanged
Dim dv As New DataView(dtAudit)
dv.RowFilter = String.Format("`{0}` Like '%{1}%'", dgAudit.Columns(2).Name, txtUser.Text)
dgAudit.DataSource = dv
Dim newDV As New DataView(dv.ToTable)
newDV.RowFilter = String.Format("`{0}` >= #{1}# and `{0}` <= #{2}#", dgAudit.Columns(5).Name, Format(dtpStart.Value, "dd/MM/yyyy"), Format(dtpEnd.Value, "dd/MM/yyyy"))
dgAudit.DataSource = newDV
End Sub
我的日期是 2/4/2015(2015 年 2 月 4 日),当我输入 dtpEnd 为 2/3/2015 时,它仍然显示该日期。当我在 dtpStart 上输入 2/3/2015 时,它不显示日期.. 就像添加 1 天之类的。我该如何解决这个问题?
最佳答案
就像 VB 文字一样,日期必须采用 #M/dd/yyyy#
格式。执行此操作的正确方法是简单地将唯一的 DataTable
绑定(bind)到网格,然后将其过滤在一行中,如下所示:
Dim table = DirectCast(dgAudit.DataSource, DataTable)
Dim textColumn = dgAudit.Columns(2).Name
Dim dateColumn = dgAudit.Columns(5).Name
table.DefaultView.RowFilter = String.Format("[{0}] = '%{1}%' AND [{2}] >= #{3:M/dd/yyyy}# AND [{2}] <= #{4:M/dd/yyyy}#",
textColumn,
txtUser.Text,
dateColumn,
dtpStart.Value,
dtpEnd.Value)
关于mysql - 如何过滤日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28357680/