作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 DataGridView,其中一列是日期列,其值如下所示:
21/01/2020 09:14
20/01/2020 10:15
我想使用来自文本框的日期输入来过滤此 DataView。
这是我的代码:
string filter = "1 = 1";
if (date_textBox.Text != "")
{
try
{
DateTime inputDate = DateTime.Parse(date_textBox.Text);
filter += String.Format(" AND Convert(dateColumn, System.Date) = '{0}'", inputDate.ToShortDateString());
}
catch (FormatException)
{
//Invalid date, do nothing
} //try-catch
} //if
myDataView.RowFilter = filter; // <=========Error in this line
我在将筛选器应用于 DataView 时出错,因为它不理解 System.Date。我还尝试过 Date、DateTime、System.DateTime 和此类变体。
那么,我需要将该日期列转换成什么类型?或者我可以在 rowFilter 中调用一些只返回日期而不返回时间的函数吗?
最佳答案
如果必须使用 RowFilter 那么这会起作用(我不推荐但会起作用):
if (DateTime.TryParse(date_textBox.Text, out DateTime inputDate))
{
var filter = $" (dateColumn >= '#{inputDate.ToString("yyyy/MM/dd")}#'"+
$" And dateColumn < '#{inputDate.AddDays(1).ToString("yyyy/MM/dd")}#')";
myDataView.RowFilter = filter;
}
如果可以从现有 DataTable 生成过滤后的 DataTable,我更喜欢这种方法:
var data = tbl.AsEnumerable()
.Where(row => ((DateTime)row["dateColumn"]).Date == inputDate)
.CopyToDataTable();
关于c# - 如何在 DataGridView 过滤器中只获取日期而不是小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59842851/
我是一名优秀的程序员,十分优秀!