本来打算称之为“Eval 不会给我时间”,但觉得这太可爱了。
我遇到的问题与我看到的标题建议的问题相反,所以这里是:
Visual Studio 2008 专业版、SQL Express 2008、Vista。Web 项目,我在其中使用设施表中的 JOINed 信息打开事件表中的记录。
我在一个完全填写的 SQL 文件中有一个 SQL DateTime 字段:例如,4/30/2009 6:30 PM。
我在 ListView 中的字段是直的<%# Eval("EventDate") %>
,据我通过从 SQLDataSource 检索观察 Autos 窗口可以看出,我的跟踪在一天中的下午 6:30 时完好无损。
据我所知,填充 DataSource 之后的唯一指令是 Eval 本身。
然而,在渲染时,该日期时间在页面上显示为 4/30/2009 12:00:00 AM。
因此,我坚信我需要额外的 fu 来解析我的 Eval 语句,以获得我投入该领域的时间。我还不太擅长这个,所以欢迎提出建议。先感谢您。
编辑:为每个 Jose 提供代码。
数据源:
<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>
列表显示:
<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)。感谢您的所有回复。