【问题标题】:Add a download Hyperlink in gridview in visual studios 2010在visual studios 2010的gridview中添加下载超链接
【发布时间】:2012-05-04 00:45:45
【问题描述】:

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

我的数据表有 3 列:

User_id, request_id, FilePath

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

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

有人知道吗?非常感谢

【问题讨论】:

  • 你用什么代码来生成网格,生成什么HTML,你看过example吗?
  • 实际上所有关于gridview(html和c#)的代码都是由视觉工作室生成的,这就是我希望知道视觉工作室行为的人能帮助我,我一直在asp.net关于 datanavigateurl 的论坛和 msdn 教程,但没有任何技巧。所以我在stackoverflow上
  • 请在浏览器中点击“查看源代码”并查看example。也可以从 Visual Studio 访问 C# 代码。
  • 您的实际 FilePath 值是什么样的?
  • @Filburt c:/directory/file.xxx

标签: c# visual-studio-2010 gridview hyperlink


【解决方案1】:

一种可能的解决方案是为您的超链接列使用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 似乎不接受其DataNavigateUrlFieldsproperty 的文件路径。


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

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

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

<tr>
    <td>
        <a>c:/directory/file.xxx</a>
    </td>
</tr>

【讨论】:

  • 我得出了同样的结论,HyperLinkField 不接受 FilePath,所以我将它们存储在我的服务器上并解决了问题,感谢您的回答
【解决方案2】:

尝试使用这个

WebClient.DownloadFile(Uri,String)

阅读这篇文章如何获得所需的事件hyperlink

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 2012-10-28
    • 2011-07-28
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多