Поле гиперссылки 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 тип данных для этой даты в формате "datetime".

Я попытался использовать другое поле для отображения в гиперссылке, это работает. Нахождение проблемы только для даты и времени.

Всего 1 ответ


Gridview не будет создавать URL-адрес, содержащий : (который находится во временной части Timestamp ). В результате тег <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)

Есть идеи?

10000