You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SqlDataSource填充下拉框时日期转换报错求助

解决SqlDataSource绑定下拉框的日期转换错误问题

嘿,我来帮你搞定这个问题!你遇到的报错主要是两个坑导致的:一是查询里用了SQL的保留关键字当列别名,二是字符串转日期时的格式兼容性冲突。我给你拆解下具体的解决方案:

错误原因拆解

你原来的查询里把转换后的列别名设成了date,这可是SQL Server的保留关键字,很容易让数据库引擎混淆字段类型;另外,当SqlDataSource把查询结果返回给下拉框时,控件可能默认尝试把这个字符串转回datetime类型,但103格式(dd/mm/yyyy)如果和服务器的区域日期设置(比如默认是mm/dd/yyyy)不匹配,就会出现“值超出范围”的错误——比如把13号当成月份,肯定超出1-12的范围对吧?

两种可行的解决办法

办法一:返回原始日期,在控件里设置显示格式(推荐)

这种方式更规范,避免了数据库层面的类型转换,让控件来处理显示格式:

  1. 修改查询语句为:
SELECT DISTINCT Appointmentdatetime FROM Visit
  1. 打开下拉框的属性设置:
    • 把DataTextField设为Appointmentdatetime
    • 设置DataFormatString为{0:dd/MM/yyyy}
    • 一定要把HtmlEncode设为False(不关闭的话格式不会生效)

这样下拉框会自动把原始的datetime值格式化成你想要的dd/mm/yyyy样式,完全不会有转换错误。

办法二:在查询里转换为字符串,修改别名避免冲突

如果你一定要在数据库层面完成转换,那得改掉关键字别名,同时让控件直接识别为字符串:
修改后的查询语句:

SELECT DISTINCT CONVERT(varchar(10), Appointmentdatetime, 103) AS FormattedDate FROM Visit

然后把下拉框的DataTextField设置为FormattedDate,这样控件会直接显示这个字符串,不会尝试转换成datetime类型,自然就不会报错了。

内容的提问来源于stack exchange,提问作者Emma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:53:18