【问题标题】:GridView Hyperlink opening fileGridView 超链接打开文件
【发布时间】:2016-04-23 15:27:12
【问题描述】:
谁能帮助我了解如何使用 Hyperlink 或 LinkButton 控件从 gridview 打开文件?
在我的应用程序中,我想从我的应用程序中指定的路径打开文件(例如“c://example/”)并将gridview中的所有文件名显示为超链接,直到它正常工作,但是当我单击作为超链接的文件名时,没有任何反应,我将 navigateurl 设置为:
<asp:HyperLink ID="HyperLink1" runat="server" **Text='<%# Eval("Name") %>'
NavigateUrl='<%# bind("FullName") %>'**></asp:HyperLink>
请帮帮我
【问题讨论】:
标签:
asp.net
gridview
aspxgridview
【解决方案1】:
在<asp:TemplateField> 中,我添加了:
<a id="A1" runat="server" target="_blank" href='<%# DataBinder.Eval(Container, "DataItem.ProofOfPayment", "~/uploads/payments/{0}") %>'>View Payment</a>
【解决方案2】:
什么是'FullName' - 如果它是 C:/Somefile 之类的东西,那么这将不起作用,因为它指向服务器硬盘驱动器上的一个位置,而不是 URL。您要么需要一个指向文件位置的虚拟目录,要么需要某种页面来读取和提供这些项目。
【解决方案3】:
您应该指定“文件”后缀。网址应如下所示:
// “file://\\Server\Folder\FileName.ext“
<asp:HyperLink ID="HyperLink1" runat="server" **Text='<%# Eval("Name") %>'
NavigateUrl='file://<%# bind("FullName") %>'**></asp:HyperLink>
如果路径包含here 报告的任何带空格,则无论如何您都可能遇到问题
最好的方法是使用 HTML 链接
<a runat="server" target="_blank" href='<%# DataBinder.Eval(Container, "DataItem.FilePath") %>'>
【解决方案4】:
我喜欢这样做以使链接文本动态化。
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" Text='<%# Bind("DataField") %>' NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.DataField", "~/Folder/{0}") %>'></asp:HyperLink>
</ItemTemplate>
【解决方案5】:
可以在Gridview的Row命令事件上完成。
protected void grdAttachment_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "ViewFile")
{
string fileName = Server.MapPath("~/Attachment/" + e.CommandArgument.ToString());
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = fileName;
process.Start();
}
}
在文件名中给出你的文件路径。当您单击链接按钮时,此文件将打开。
您可以点击此链接查看完整示例:
How to Open or view Images & Docx Files in Gridview in Asp.Net (C#)?