我正在尝试绑定一个GridView HyperLinkField,使得绑定的列作为URL中的参数值。这是相当标准的操作 - 没有什么花哨的东西,但是当绑定的列包含冒号
以下是我的GridView,将时间值绑定到HyperLinkField url中。
它生成的HTML如下所示。请注意,
我的问题核心是:如何将包含冒号的值与HyperLinkField的URL绑定到数据列?或者,如果失败,是否可以通过其他方法创建相同的绑定超链接?
更改数据格式以不包括冒号将是最后的选择,因为LinkedPage.aspx期望参数值采用该格式,并且已经编写、测试和使用。
:
时,绑定会失败。在我特定的情况下,这个值是表示时间长度的字符串,例如"14:35"或"1:07:19"。以下是我的GridView,将时间值绑定到HyperLinkField url中。
<asp:GridView ID="ResultsGridView" runat="server" AutoGenerateColumns="False"
DataSourceID="ResultsDataSource" EnableModelValidation="True"
AllowPaging="True">
<Columns>
<asp:BoundField DataField="Year" HeaderText="Year" SortExpression="Year" />
<asp:HyperLinkField DataNavigateUrlFields="RunTime"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
<asp:BoundField DataField="RunTime" HeaderText="Time"
SortExpression="RunTime" />
<asp:BoundField DataField="FullName" HeaderText="Name"
SortExpression="FullName" ReadOnly="True" />
</Columns>
</asp:GridView>
它生成的HTML如下所示。请注意,
<a>
标签没有href
属性。<tr>
<td>2010</td><td><a>34:58</a></td><td>34:58</td><td>Joe Schmoe</td>
</tr><tr>
<td>2010</td><td><a>35:30</a></td><td>35:30</td><td>Rod Krueger</td>
</tr><tr>
<td>2010</td><td><a>35:38</a></td><td>35:38</td><td>Mike Johnson</td>
</tr>
但是,如果我将绑定字段从RunTime切换到Year,即切换到不包含冒号值的列,则它会如预期般工作。以上的GridView,将HyperLinkField的DataNavigateUrlFields属性更改如下:
<asp:HyperLinkField DataNavigateUrlFields="Year"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
现在HTML输出是正确的,如下:
<tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">34:58</a></td><td>34:58</td><td>Joe Schmoe</td>
</tr><tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">35:30</a></td><td>35:30</td><td>Rod Krueger</td>
</tr><tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">35:38</a></td><td>35:38</td><td>Mike Johnson</td>
</tr><tr>
我的问题核心是:如何将包含冒号的值与HyperLinkField的URL绑定到数据列?或者,如果失败,是否可以通过其他方法创建相同的绑定超链接?
更改数据格式以不包括冒号将是最后的选择,因为LinkedPage.aspx期望参数值采用该格式,并且已经编写、测试和使用。