【问题标题】:How to filter date values in datagrid如何过滤数据网格中的日期值
【发布时间】:2014-12-15 20:07:53
【问题描述】:

我无法过滤数据网格中的日期值。这是我的代码:

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

有人可以帮我吗?

【问题讨论】:

标签: c# datagrid


【解决方案1】:

您不能在 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"));

【讨论】:

    【解决方案2】:

    显然字段 Data 来自 Datetime 类型,您不能对其执行 Like。您可以使用:

    DV.RowFilter = string.Format("Data = '{0}'", textBox1.Text);
    

    你也有可能使用=, &gt;=, &lt;=.

    另外请将字段名称更改为日期!

    你可以在LINQ试试类似的东西

    CultureInfo invC = CultureInfo.InvariantCulture;
    
    var query= from myRow in dataTable.AsEnumerable()
                         where myRow.Field<DateTime>("Date").ToString(invC).Contains("mm/dd/yyyy")
                        select myRow;
    
    // the date should be in format months/days/year -> Example 23 January 2014 is 01/23/2014
    
    DataTable newTable= query.CopyToDataTable<DataRow>();
    

    【讨论】:

    • RowFilter 属性接受 DataColumn.Expression 属性文档中列出的表达式。没有暗示 DATEPART 是此属性解析器识别的内容。你试过了吗?
    • @Steve 我会在您发表评论后检查它。
    • 还是错了,现在你错过了价值周围的引号或英镑,但此时你得到了另一个人给出的相同答案。如果您删除,可能不会错过任何内容。
    • @Steve 是的,我正在寻找其他方式。可能我会选择 LINQ
    【解决方案3】:

    DV.RowFilter = string.Format("Data &gt;= '{0}'", textBox1.Text); 如果您的列是数据库中的datetime,它将起作用。这将返回指定日期或之后的记录。如果您要查找早于该日期的记录,请将符号切换为 &lt;

    【讨论】:

    • 当我使用 >= 时出现此错误“无法在 System.DateTime 和 System.Int32 中执行操作 '>='”
    • textBox1.Text 的值是多少?它需要是一个可以解析为日期的值。
    猜你喜欢
    • 2012-03-29
    • 2021-06-06
    • 2012-11-14
    • 2013-04-17
    • 1970-01-01
    • 2015-03-29
    • 2012-04-25
    • 2014-07-02
    • 2020-10-04
    相关资源
    最近更新 更多