我有一个从数据库中检索的对象,其中一个字段是URL。我在gridview中显示这些数据,我希望URL列是一系列链接,说“下载”,它指向相应的URL。
我目前有以下内容:
<asp:GridView ID="my_gv" runat="server" AutoGenerateColumns = "false"
GridLines="None" Width="100%" AllowSorting="True"
CssClass="table table-bordered table-condensed">
<AlternatingRowStyle BackColor="#F5F5F5" />
<Columns>
<asp:HyperLinkField DataNavigateUrlFields = "location" Text = "Download link" HeaderText = "Download" />
</Columns>
</asp:GridView>
这似乎不起作用。条目是蓝色的,就像链接一样,但是用鼠标悬停实际上并不会调用URL(光标不会更改为“链接”光标)。查看生成的HTML,它们是<a>
标记,但它们不包含href
attrivute。为什么?我错过了什么让这个工作?我填写以下内容:
private void populateElementView()
{
List<MyElement> elements = database.getGeneratedElements();
// elements has a .location property
my_gv.DataSource = elements;
my_gv.DataBind();
}
有关详细信息,URL指向计算机上的文件。手动插入带有“测试”网址的项目实际上是有效的,而实际的文件路径却没有。
答案 0 :(得分:1)
试试这可能会对你有所帮助。我在这里使用DataNavigateUrlFormatString Property用于
Gets or sets the string that specifies the format in which the URLs for the hyperlinks in a HyperLinkField object are rendered.
<asp:HyperLinkField DataNavigateUrlFields = "location" Text = "Download link" HeaderText = "Download" DataNavigateUrlFormatString="{0}" />
编辑:
您可以将文件放在服务器位置,而您的位置字段将具有这样的虚拟路径MusicFiles/File1.avi
现在,您可以将HyperLinkField
中的网址格式设置为http://localhost//Download/{0}
,其中{0}表示MusicFiles / File1.avi或location
字段值
<asp:HyperLinkField DataNavigateUrlFields = "location" Text = "Download link" HeaderText = "Download" DataNavigateUrlFormatString="http://localhost//Download/{0}" />
我认为这将在您部署它时帮助您,用户可以从您的服务器下载文件。
答案 1 :(得分:0)
尝试这种方式:
<asp:HyperLink ID="HyperLink1" Text="Download link" NavigateUrl='<%# Eval("location")%>' runat="server"></asp:HyperLink>
或者如果您使用其他控件,只需将值绑定到NavigateUrl:
<%# Eval("location")%>