使用 gridview c# 中的链接从网页打开本地文件
本文关键字:文件 网页 gridview 链接 使用 | 更新日期: 2023-09-27 18:30:24
我需要打开一些类型的文件,如.jpg、单词.pdf当用户单击 GridView 中的"链接"时。现在我正在使用此代码及其未打开。
这是一个Web应用程序,我必须打开存在的文件在用户的本地驱动器中。我将在 NavigateUrl 属性中绑定文件的路径超链接的数量
<asp:hyperlink ID="HyplnkName" runat="server" NavigateUrl= '<%# ConfigurationManager.AppSettings["ImagesFilePath"]) %>' Target="_top" Text='<%# DataBinder.Eval(Container, "DataItem.FileName") %>' />
这是我
在项目中使用的内容
<asp:HyperLink ID="hlPdf" runat="server" NavigateUrl="~/PdfHandler.ashx"
Target="_blank">Click to view PDF</asp:HyperLink>
这是 ashx 处理程序文件
using System;
using System.Web;
using System.IO;
public class PdfHandler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
byte[] data = File.ReadAllBytes(@"Your Path");
context.Response.ContentType = "application/pdf";
context.Response.OutputStream.Write(data, 0, data.Length);
}
public bool IsReusable {
get {
return false;
}
}
}
改用OnRowDataBound:
ASPX 页:
<asp:GridView ID="GridView1" runat="server"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HL" runat="server" Target ="_blank"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
代码隐藏:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink hlink = (HyperLink)e.Row.FindControl("HL");
string url = "~/Docs/" + e.Row.Cells[1].Text;
hlink.NavigateUrl = url;
hlink.Text = "Read";
}
}