首页 > 解决方案 > 日期字段的 GridView 超链接未使用 vb.net 显示

问题描述

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Width="637px" CssClass="auto-style1">
    <Columns>
        <asp:HyperLinkField DataNavigateUrlFields="TimeStamp" DataNavigateUrlFormatString="Logs.aspx?TimeStamp={0}" DataTextField="TimeStamp" HeaderText="TIME STAMP"></asp:HyperLinkField>
    </Columns>
</asp:GridView>

<asp:SqlDataSource  ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SoneilCloudRemConnectionString %>"
                    SelectCommand="SELECT [TimeStamp] FROM [SensorLogData] WHERE ([deviceId] = @deviceId)">
    <SelectParameters>
        <asp:Parameter DefaultValue="121313131" Name="deviceId" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

以上是用于显示带有超链接的日期的代码片段。对我来说,它只显示日期而不是超链接。在我的 SQL 中,这个日期的数据类型是“日期时间”格式。

我尝试使用其他字段在超链接中显示,它正在工作。仅查找日期时间的问题。

标签: asp.netvb.net

解决方案


Gridview 不会构建包含:(在 的时间部分中Timestamp)的 URL。这会导致<a>创建一个没有 的标签href

如果您可以没有时间生活,则可以将 更改DataNavigateUrlFormatString为仅使用日期部分:

DataNavigateUrlFormatString="Logs.aspx?TimeStamp={0:d}"

此处描述了另一种选择。这将涉及格式化Timestamp为特定格式,然后Timestamp使用`DateTime.ParseExact() 解析查询字符串。

DataNavigateUrlFormatString="Logs.aspx?TimeStamp={0:yyyy-MM-dd hh-mm-ss}"

然后在Logs.aspx

DateTime.ParseExact(Request.QueryString("Timestamp").ToString(), "yyyy-MM-dd hh-mm-ss", System.Globalization.CultureInfo.CurrentCulture)

推荐阅读