0

我的问题很简单,我想让gridview的最后一列成为我计算机本地文件的下载链接。

我的数据表有 3 列:

User_id, request_id, FilePath

FilePath 是我计算机上文件的路径(字符串),我一直在尝试的是:在网页上的 gridview 中显示前 2 列(User_id 和 request_id)。在第 3 列中,我添加了一个超链接字段并尝试将它(使用属性 DataNavigateUrlField)链接到 FilePath 列的内容。

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

有人对此有所了解吗?非常感谢

4

2 回答 2

1

一个可能的解决方案可能是TemplateField为您的超链接列使用 a:

<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>

似乎 aHyperLinkField不接受其DataNavigateUrlFields属性的文件路径。


我试图通过设置DataNavigateUrlFormatString属性来超越它:

<asp:HyperLinkField DataNavigateUrlFormatString="file:///{0}" DataNavigateUrlFields="FilePath" DataTextField="FilePath" />

但问题仍然存在,只会产生

<tr>
    <td>
        <a>c:/directory/file.xxx</a>
    </td>
</tr>
于 2012-05-03T16:45:45.390 回答
0

尝试使用这个

WebClient.DownloadFile(Uri,String)

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

于 2012-05-03T12:11:58.327 回答