打算称之为“Eval不会给我一天的时间”,但认为太可爱了。
我从我为标题看到的建议问题中遇到了相反的问题,所以这里有:
Visual Studio 2008 Pro,SQL Express 2008,Vista。 Web项目,我从一个事件表中打开记录,其中包含来自Facilities表的JOINed信息。
我在SQL文件中有一个完整填写的SQL DateTime字段:例如,4/30/2009 6:30 PM。
我在ListView中的字段是直的<%# Eval("EventDate") %>
,而我的跟踪,就我从观察Autos窗口通过SQLDataSource检索而言,能够在下午6:30的时间内完好无损地存活下来。一天。
据我所知,在填充DataSource之后,唯一的指令就是Eval本身。
然而,在渲染时,该日期时间在页面上显示为4/30/2009 12:00:00 AM 。
因此,我坚信,我需要额外的fu来解析我的Eval语句,以便在我进入该领域的同时。我还不熟悉这一点,所以欢迎提出建议。提前谢谢。
编辑:为Jose提供代码。
的DataSource:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MeetingsConnectionString %>"
onselecting="SqlDataSource1_Selecting"
SelectCommand="SELECT Events.ID, Events.FacilityID, Events.Room, Events.EventDate, Events.Speaker, Events.Topic, Facilities.ID AS Expr1, Facilities.FacilityName, Facilities.FacilityAddress, Facilities.FacilityCity, Facilities.FacilityState, Facilities.FacilityZip, Facilities.FacilityLat, Facilities.FacilityLong FROM Events INNER JOIN Facilities ON Events.FacilityID = Facilities.ID WHERE (Events.EventDate BETWEEN @EventDate AND @EventDate2) ORDER BY Events.EventDate"
ProviderName="System.Data.SqlClient">
<SelectParameters>
<asp:Parameter Name="EventDate" />
<asp:Parameter Name="EventDate2" />
</SelectParameters>
</asp:SqlDataSource>
的ListView:
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1"
DataKeyNames="ID,Expr1">
<AlternatingItemTemplate>
When:<asp:Label ID="EventDateLabel" runat="server" Text='<%# Eval("EventDate") %>' />
...
<ItemTemplate>
When: <asp:Label ID="EventDateLabel" runat="server" Text='<%# Eval("EventDate") %>' /><br />
编辑2:我通过将EventDate分为EventDate(日期)和EventTime(时间)来解决问题。我现在得到了正确的值,并继续使用CONVERT或CAST在SQL查询中将时间值从军事时间转换为民用时间(即下午6:30)。感谢您的所有回复。
答案 0 :(得分:1)
Sql server得到了一个新的类型,日期,如果你将日期时间转换为datelike,它会这样做: select convert(datetime,convert(date,'4/30/2009 6:30 PM'))
Maby你在某处指定了错误的类型?