DataView RowFilter 和有效的 UK DateTime
DataView RowFilter and valid UK DateTime
我正在尝试向 DataGidView 添加行过滤器
列类型是从数据库中获取的日期
我使用 DateTimePicker 允许用户select一个日期,但是我不断收到错误消息
"String was not recognized as a valid DateTime."
我的代码在 ValueChanged 事件上触发如下
dt.DefaultView.RowFilter = cmbColumns.Text.ToString & " =#" & dtpFilter.Value.ToString("dd/MM/yyyy") & "#"
我已经尝试了很多变体,
a)就像将日期时间传递给字符串变量
b) 剥离时间方面并在字符串中手动构建日期
我最终想确认日期是英国格式并且有效
任何帮助将不胜感激,因为我一天中的大部分时间都在做这件事
一个DateTime
类型没有格式。顾名思义,DataGridView
提供了一个数据视图,它尊重系统的区域性设置以及您正在进行的任何单元格格式设置。 "en-US"文化下的一些数据:
除了改变文化,没有做任何其他事情,VIEW 变成了:
它们是相同的日期,只是显示方式不同。这都是 DGV View 方面的一部分。要将 DataView
筛选为日期:
zDV.RowFilter = String.Format("ZDate = '{0}'", #10/14/2010#)
结果:
DataView
中的数据仍然是数据 - 未针对文化或其他任何内容进行格式化。由于 DateTime 没有格式,因此您不必担心。上面的代码在过滤器中传递了一个 culture invariant/US Date (m/d/y),但它起作用了。原因是因为 DateTime
只是一个数字,而 没有格式 .
您的代码显然令人窒息的事情之一是过滤器表达式。这必须采用 文化不变 顺序 (MM/dd/yyyy
),与定义日期文字的方式相同:Dim myDT = #02/29/2016#
.
我使用的字符串格式版本只是为了便于阅读和定义多个条件:
zDV.RowFilter = String.Format("ZDate = '{0}' And Color = '{1}' ", dt.Date, "green")
我正在尝试向 DataGidView 添加行过滤器
列类型是从数据库中获取的日期
我使用 DateTimePicker 允许用户select一个日期,但是我不断收到错误消息
"String was not recognized as a valid DateTime."
我的代码在 ValueChanged 事件上触发如下
dt.DefaultView.RowFilter = cmbColumns.Text.ToString & " =#" & dtpFilter.Value.ToString("dd/MM/yyyy") & "#"
我已经尝试了很多变体, a)就像将日期时间传递给字符串变量 b) 剥离时间方面并在字符串中手动构建日期
我最终想确认日期是英国格式并且有效
任何帮助将不胜感激,因为我一天中的大部分时间都在做这件事
一个DateTime
类型没有格式。顾名思义,DataGridView
提供了一个数据视图,它尊重系统的区域性设置以及您正在进行的任何单元格格式设置。 "en-US"文化下的一些数据:
除了改变文化,没有做任何其他事情,VIEW 变成了:
它们是相同的日期,只是显示方式不同。这都是 DGV View 方面的一部分。要将 DataView
筛选为日期:
zDV.RowFilter = String.Format("ZDate = '{0}'", #10/14/2010#)
结果:
DataView
中的数据仍然是数据 - 未针对文化或其他任何内容进行格式化。由于 DateTime 没有格式,因此您不必担心。上面的代码在过滤器中传递了一个 culture invariant/US Date (m/d/y),但它起作用了。原因是因为 DateTime
只是一个数字,而 没有格式 .
您的代码显然令人窒息的事情之一是过滤器表达式。这必须采用 文化不变 顺序 (MM/dd/yyyy
),与定义日期文字的方式相同:Dim myDT = #02/29/2016#
.
我使用的字符串格式版本只是为了便于阅读和定义多个条件:
zDV.RowFilter = String.Format("ZDate = '{0}' And Color = '{1}' ", dt.Date, "green")