C# 如何在datagrid中过滤日期值

C# 如何在datagrid中过滤日期值,c#,datagrid,C#,Datagrid,我无法在数据网格中筛选日期值。这是我的密码: DataTable dbdataset; DataView DV = new DataView(dbdataset); DV.RowFilter = string.Format("Data LIKE '%{0}%'", textBox1.Text); dataGridView1.DataSource = DV; 我总是会遇到这样的错误: Unable to Perform Operation 'Like' on System.DateTime an

我无法在数据网格中筛选日期值。这是我的密码:

DataTable dbdataset;
DataView DV = new DataView(dbdataset);
DV.RowFilter = string.Format("Data LIKE '%{0}%'", textBox1.Text);
dataGridView1.DataSource = DV;
我总是会遇到这样的错误:

Unable to Perform Operation 'Like' on System.DateTime and System.String

有人能帮我吗?

显然,字段数据来自Datetime类型,您不能对其执行类似操作。您可以使用:

DV.RowFilter = string.Format("Data = '{0}'", textBox1.Text);
您也可以使用
=,>=,例如2014年1月23日是2014年1月23日
DataTable newTable=query.CopyToDataTable();

显然,字段数据来自Datetime类型,您不能对其执行类似操作。您可以使用:

DV.RowFilter = string.Format("Data = '{0}'", textBox1.Text);
您也可以使用
=,>=,例如2014年1月23日是2014年1月23日
DataTable newTable=query.CopyToDataTable();

DV.RowFilter=string.Format(“数据>='{0}',textBox1.Text)

如果您的列是数据库中的
日期时间
,则此选项将起作用。这将返回指定日期或比指定日期更新的记录。将符号切换到
DV.RowFilter=string.Format(“数据>='{0}',textBox1.Text)

如果您的列是数据库中的
日期时间
,则此选项将起作用。这将返回指定日期或比指定日期更新的记录。将符号切换到
您不能在
DateTime
数据类型上使用
LIKE
运算符。尝试使用相等运算符

DV.RowFilter = string.Format("Data = '{0}'", textBox1.Text);
但是,要小心
textBox1.Text中的内容。它必须可转换为
DateTime
数据类型。还要记住,
DateTime
还有一个
Time
部分,而不仅仅是
Date
部分

或者,您可能希望尝试此操作以筛选特定日期中的所有行:

DateTime dt = Convert.ToDateTime(textBox1.Text);
DV.RowFilter = string.Format("Data > '{0}' AND Data < '{1}'", dt.AddDays(-1).ToString("yyyyMMdd"), dt.AddDays(1).ToString("yyyyMMdd"));
DateTime dt=Convert.ToDateTime(textBox1.Text);
DV.RowFilter=string.Format(“数据>'{0}'和数据<'{1}',dt.AddDays(-1).ToString(“yyyyymmdd”),dt.AddDays(1).ToString(“yyyyymmdd”);

您不能在
DateTime
数据类型上使用
LIKE
运算符。尝试使用相等运算符

DV.RowFilter = string.Format("Data = '{0}'", textBox1.Text);
但是,要小心
textBox1.Text中的内容。它必须可转换为
DateTime
数据类型。还要记住,
DateTime
还有一个
Time
部分,而不仅仅是
Date
部分

或者,您可能希望尝试此操作以筛选特定日期中的所有行:

DateTime dt = Convert.ToDateTime(textBox1.Text);
DV.RowFilter = string.Format("Data > '{0}' AND Data < '{1}'", dt.AddDays(-1).ToString("yyyyMMdd"), dt.AddDays(1).ToString("yyyyMMdd"));
DateTime dt=Convert.ToDateTime(textBox1.Text);
DV.RowFilter=string.Format(“数据>'{0}'和数据<'{1}',dt.AddDays(-1).ToString(“yyyyymmdd”),dt.AddDays(1).ToString(“yyyyymmdd”);

请参见:[SQL Server datetime LIKE select?][1][1]:请参见:[SQL Server datetime LIKE select?][1][1]:RowFilter属性接受DataColumn.Expression属性文档中列出的表达式。没有提示DATEPART是此属性解析器可以识别的东西。你试过了吗?@Steve我会在你的评论后检查一下。仍然是错的,现在你错过了价值周围的引号或英镑,但在这一点上,你得到了另一个人给出的相同答案。如果删除,可能不会遗漏任何内容。@Steve是的,我正在寻找其他方式。我可能会使用LINQT。RowFilter属性接受DataColumn.Expression属性文档中列出的表达式。没有提示DATEPART是此属性解析器可以识别的东西。你试过了吗?@Steve我会在你的评论后检查一下。仍然是错的,现在你错过了价值周围的引号或英镑,但在这一点上,你得到了另一个人给出的相同答案。如果删除,可能不会遗漏任何内容。@Steve是的,我正在寻找其他方式。当我使用>=时,我可能会使用LINQ,因为我得到这个错误“无法在System.DateTime和System.Int32中执行操作'>=”
textBox1.Text的值是多少?它需要是一个可以解析为日期的值。当我使用>=时,会出现以下错误:“无法在System.DateTime和System.Int32中执行操作”>=”
textBox1.Text
?它需要是一个可以解析为日期的值。