我有一个非常简单的 ASP.Net 页面,它充当存储过程的前端。它只是运行程序并使用 gridview 控件显示输出:总代码不到 40 行,包括 aspx 标记。存储过程本身非常...易变。它有多种用途,输出格式会定期更改。
整个事情都很好,因为 gridview 控件并不真正需要关心存储过程返回哪些列:它只是在页面上显示它们,这正是我想要的。
然而,这个运行的数据库在时间部分并不重要的地方都有许多日期时间列——它总是归零。我想要做的是控制gridview中日期时间列的格式,而不知道它们将是哪些列。每当结果中的列具有日期时间类型时,只需应用给定的格式字符串,该字符串将修剪时间组件。
我知道我可以在数据库中转换为 varchar,但我真的不想让开发人员关心查询中的格式,无论如何这属于表示级别。还有其他想法吗?
最后使用以下代码以可接受(或至少改进)的方式使其工作:
Protected Sub OnRowDatabound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim d As DateTime
For Each cell As TableCell In e.Row.Cells
If Date.TryParse(cell.Text, d) AndAlso d.TimeOfDay.Ticks = 0 Then
cell.Text = d.ToShortDateString()
End If
Next cell
End If
End Sub