首页 > 解决方案 > 在 dategridview 中过滤日期时截断日期

问题描述

我正在尝试从源DateTimePicker过滤DataGridView有界DataTableby using

我的问题是该列DATETIME有日期和时间,我只想使用没有时间的日期示例

select cast(DATETIME as DATE) from table_name

我在下面尝试过,但我收到错误消息说

表达式包含未定义的函数调用 cast()

那么我如何截断日期?

(MyDataGridView.DataSource as DataTable).DefaultView.RowFilter = string.Format("cast(DATETIME as DATE)= '{0}'", DpickerEntryDate.Value.ToShortDateString());

所有事件代码

        if (DpickerEntryDate.Value.Date <= DateTime.Today.Date)
        {
            (MyDataGridView.DataSource as DataTable).DefaultView.RowFilter = string.Format("cast(DATETIME as DATE) = '{0}'", DpickerEntryDate.Value.ToShortDateString());
        }
        else if (DpickerEntryDate.Value.Date > DateTime.Today.Date)
        {
            MessageBox.Show("Can not use future date", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
        }
        else
        {
            //do something
        }

谢谢

标签: c#datagridview.net-4.0

解决方案


不要“截断”日期。让日期作为 DateTime 流入您的 C# 代码,然后在表单初始化代码中,通过从(a的属性中获取列并设置DataGridViewDataGridViewColumnColumnsDataGridViewDefaultCellStyle

column.DefaultCellStyle.Format = //Some format from DateTime.ToString(string format)

推荐阅读