我的数据库中有一个日期列,它不是日期时间,因此这些值没有附加时间。
但是,当我将SQLDataSource拖放到我的页面上并将其绑定dropdownlist
以显示日期时,它会自动添加12:00:00 AM
.
我知道它为什么会这样,但我不知道如何摆脱它。我需要从代码隐藏中绑定它吗?
有一个简单的解决方法吗?
设置 DropDownList.DataTextFormatString。
<asp:DropDownList
id="datesList"
runat="server"
dataTextFormatString="{0:dd/MM/yyyy}"/>
然后在 DataBinding 之后,您的控件将应用正确的格式:
将格式添加到字段或列定义。例如网格视图:
<asp:boundfield datafield="Your_Date_Column" dataformatstring="{0:MMMM d, yyyy}" htmlencode="false" />
顺便说一句,其他方法是使用 ViewModel - 仅用于显示数据的类。在这个类中,不需要使用 DateTime 或其他数据类型:只有字符串。例如,您可以在此处定义一些显示默认值:如果值为 null,则显示文本“未定义”或您需要的内容。在某些情况下,这种方法使您可以集中点准备数据以供显示。
你能显示你的 sql 查询吗?它可能有用吗?你是否使用 convert(varchar,date ,103) 方法来查询
C# 没有日期数据类型,尽管来自 sql(date) 数据类型的值被转换为 c# 中的日期时间字段。因此,最好使用 convert(varchar,date ,103) 将日期转换为 sql 中的 nvarchar,尽管 C# 将其视为字符串。