在 DataGridView 中显示之前将时间戳(Datetime.ticks)从数据库转换为 Datetime 值
Posted
技术标签:
【中文标题】在 DataGridView 中显示之前将时间戳(Datetime.ticks)从数据库转换为 Datetime 值【英文标题】:Convert timestamp(Datetime.ticks) from database to Datetime value before displaying it in DataGridView 【发布时间】:2012-08-11 11:18:45 【问题描述】:我在我的 winform 应用程序中使用 SQL Server 精简版作为后端。
我的一张表中有一个 时间戳 列。我已按如下方式存储时间戳:
DateTime dt = System.DateTime.Now;
long timestamp = dt.Ticks;
它将表示当前日期和时间的长值存储到数据库中。
我想通过设置 DataSource 属性在 DataGridView 控件中显示表格的数据。
当我使用 SQL 查询“select * from my-table”检索表数据并附加到 DataSource 时,它只是将时间戳显示为长值。
我的问题是: 在 DataGridView 中显示之前,如何将时间戳转换回 dd-mm-yyyy 格式的 DateTime 值?
【问题讨论】:
你能举个例子,你如何将数据绑定到datagridview?你用什么作为数据源?只是数据表? 我执行了 SqlCeCommand 并将 SqlCeResultSet 附加到 DataGridView 的 DataSource 属性。 【参考方案1】:如果你使用数据表,你可以这样做:
resultDataTable.Columns.Add(new DataColumn("DateTime", typeof(DateTime)));
foreach (DataRow r in dt.Rows)
r["DateTime"] = new DateTime(Convert.ToInt32(r["Timestamp"]);
dt.Columns.Remove("Timestamp");
选中此项以将 sqlceresultset.resultview 转换为数据表:Convert SQLCEResultSet resultview to datatable
【讨论】:
【参考方案2】:怎么样
Datetime dt = new DateTime(longvaluefromdatabase);
将 DateTime 结构的新实例初始化为指定的刻度数。
阅读this
【讨论】:
我同意,这会将长值转换为日期时间值。但是我将如何在 DatagridView 中反映这种变化?以上是关于在 DataGridView 中显示之前将时间戳(Datetime.ticks)从数据库转换为 Datetime 值的主要内容,如果未能解决你的问题,请参考以下文章
datagridview行删除时,之前都能删除,但就是最后一行删除时,数据库删除了,但datagridview却还显示它。
在插入之前检查 DataGridview 中的值是不是与数据库表/模式兼容
C# WIN窗体 datagridview中将显示成绩小于60的行显示为红色,之前问了,但是找不到RowDataBound事件