在 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 的内容。

最终得到了我什至无法点击的死链接,它们只是在鼠标悬停时改变颜色。

有人对此有线索吗?多谢

在 Visual Studios 2010 的网格视图中添加下载超链接

一个可能的解决方案是对超链接列使用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)

并阅读此如何获取所需的事件超链接