在 Visual Studios 2010 的网格视图中添加下载超链接
本文关键字:添加 下载 超链接 视图 网格 Visual Studios 2010 | 更新日期: 2023-09-27 18:32:58
我的问题很简单,我想将网格视图的最后一列作为计算机上本地文件的下载链接。
我有 3 列的数据表:
User_id, request_id, FilePath
FilePath是我计算机上文件的路径(字符串),我一直在尝试的是:在网页上的网格视图中显示前 2 列(User_id 和 request_id)。在第 3 列中,我添加了一个超链接字段,并尝试将其(使用属性 DataNavigateUrlField)链接到列 FilePath 的内容。
我最终得到了我什至无法点击的死链接,它们只是在鼠标悬停时改变颜色。
有人对此有线索吗?多谢
一个可能的解决方案是对超链接列使用TemplateField
:
<asp:GridView AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href='<%# DataBinder.Eval(Container.DataItem, "FilePath") %>'>
<%# DataBinder.Eval(Container.DataItem, "FilePath")%>
</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
将创建所需的输出:
<tr>
<td>
<a href='c:/directory/file.xxx'>c:/directory/file.xxx</a>
</td>
</tr>
似乎HyperLinkField
不接受其DataNavigateUrlFields
属性的文件路径。
我试图通过设置 DataNavigateUrlFormatString
属性来超越它:
<asp:HyperLinkField DataNavigateUrlFormatString="file:///{0}" DataNavigateUrlFields="FilePath" DataTextField="FilePath" />
但问题仍然存在,只会产生
<tr>
<td>
<a>c:/directory/file.xxx</a>
</td>
</tr>
尝试使用它
WebClient.DownloadFile(Uri,String)
并阅读此如何获取所需的事件超链接