【问题标题】:Displaying hours and minutes from a SQL Server time column in an ASP.Net DetailsView在 ASP.Net 详细信息视图中显示 SQL Server 时间列中的小时和分钟
【发布时间】:2023-09-15 19:06:01
【问题描述】:

在 ASP.Net DetailsView 中有一个名为 LateTimeArrivedAtSchool 的模板字段。此字段的数据来自 SQL Server 时间列。数据库中的数据以小时、分钟和秒的形式存储。

我们希望仅显示小时和分钟。

这是模板字段的标记:

<asp:TemplateField HeaderText="Late Time Arrived At School:" SortExpression="LateTimeArrivedAtSchool">
    <EditItemTemplate>
        <asp:TextBox ID="TextBoxLateTimeArrivedAtSchool" runat="server" 
            Text='<%# Bind("LateTimeArrivedAtSchool") %>'></asp:TextBox>
    </EditItemTemplate>

    <InsertItemTemplate>
        <asp:TextBox ID="TextBoxLateTimeArrivedAtSchool" runat="server" 
            Text='<%# Bind("LateTimeArrivedAtSchool") %>'></asp:TextBox>
    </InsertItemTemplate>

    <ItemTemplate>
        <asp:Label ID="LabelLateTimeArrivedAtSchool" runat="server" 
            Text='<%# Bind("LateTimeArrivedAtSchool", "{0:hh:mm}") %>'></asp:Label>
    </ItemTemplate>

    <ItemStyle ForeColor="Blue" />
</asp:TemplateField>

使用“{0:hh:mm}”会产生一个错误,指出“输入字符串的格式不正确。”

您能告诉我我们需要在 Bind 语句中使用什么吗?

* 更新 * 我将该列的 SQL Server 数据类型从 Time 列更改为 DateTime 列,并且能够显示数据的仅时间部分。

【问题讨论】:

  • 你可以看看这个question。它展示了如何在 aspxControls 中使用 Binding 格式

标签: asp.net markup detailsview time-format


【解决方案1】:

使用 eval 代替 bind

Text='<%# string.Format("{0:hh:mm}", Eval("LateTimeArrivedAtSchool")) %>'

【讨论】:

  • 感谢大家的回复。我会试试 Sundeep 的那个,也看看上面评论中的链接,让你知道它是如何工作的。
  • 尝试 Eval 给出了同样的错误,所以我会尝试看看我是否可以从 Pilgerstorfer Franz 发布的链接中学习如何做到这一点。
  • 该链接建议我使用 DataBinder.Eval 但这也给出了同样的错误。我现在将尝试将列的 SQL Server 数据类型从 Time 更改为 DateTime,看看是否会有所不同。
  • 就是这样。我将 SQL Server 列数据类型更改为 DateTime,并且能够使用现有的原始标记显示仅时间部分。
  • Sundeep,在我更改列数据类型后,您的标记也有效。 :-)
最近更新 更多