【发布时间】:2016-06-04 05:13:56
【问题描述】:
我有这门课:
public class ScheduledReports
{
public string Unit { get; set; }
public string ReportName { get; set; }
public DateTime NextExecutionCalcd { get; set; }
public string AllEmailAddresses { get; set; }
public DateTime DataRangeBeginDateCalcd { get; set; }
public DateTime DataRangeEndDateCalcd { get; set; }
}
底层附属 SQL Server 表使用 DateTime 字段。
我像这样填充类的实例:
while (sqlReader.Read())
{
ScheduledReports sr = new ScheduledReports();
. . . // Other class member assignments elided for brevity
sr.DataRangeBeginDateCalcd = GetNextDataRangeBeginDateAfterQueued(unit, rptName, Convert.ToDateTime(sqlReader["NextExecutionsBeginDateArg"]).Date);
sr.DataRangeEndDateCalcd = GetNextDataRangeEndDateAfterQueued(unit, rptName, Convert.ToDateTime(sqlReader["NextExecutionsEndDateArg"]).Date);
scheduledRpts.Add(sr);
}
如您所见,我正在使用“Convert.ToDateTime(bla).Date”而不是简单的“Convert.ToDateTime(bla)”,希望借此截断时间部分,但它不起作用;我分配了从上面显示了 sn-p 的方法返回的内容:
private void LoadScheduledTab()
{
List<ScheduledReports> scheduledRpts = RoboReporterSQL.GetScheduledReports();
dataGridViewScheduled.DataSource = scheduledRpts;
}
...但是网格显示日期时间值和时间值,这对我来说没用;我只想要日期,只想要日期。
如何说服显示器停止泄露 TMI?
更新
我尝试像这样实现用户 1666620 的答案(在添加 System.ComponentModel.DataAnnotations 之后)作为参考并解析“DisplayFormat”):
public class ScheduledReports
{
public string Unit { get; set; }
public string ReportName { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}")]
public DateTime NextExecutionCalcd { get; set; }
public string AllEmailAddresses { get; set; }
public DateTime DataRangeBeginDateCalcd { get; set; }
public DateTime DataRangeEndDateCalcd { get; set; }
}
...但它仍然失败;它会编译,但仍会在 DataGridView 中显示日期和时间的值。
【问题讨论】:
标签: c# sql-server datetime datagridview datagridviewcolumn