c#
  • asp.net
  • 2012-04-09 47 views 0 likes 
    0

    当用户点击gridview中的链接时,我需要打开一些类型的文件,如.jpg,word,.pdf 。现在我正在使用 这个代码,它没有打开。使用gridview中的链接从网页打开本地文件c#

    这是一个Web应用程序,我必须打开用户本地驱动器中存在的文件 。我将在超级链接

    <asp:hyperlink ID="HyplnkName" runat="server" NavigateUrl= '<%# ConfigurationManager.AppSettings["ImagesFilePath"]) %>' Target="_top" Text='<%# DataBinder.Eval(Container, "DataItem.FileName") %>' /> 
    
    +0

    我觉得你必须使用处理程序文件,如.ashx的处理的文件,并显示它们 – Prabhavith 2012-04-09 08:04:30

    +0

    @Prabhavith这是为什么?我只需要打开本地驱动器中的文件。这些文件不在Web服务器中 – Anuya 2012-04-09 08:11:02

    回答

    0

    这里的NavigateUrl属性 约束力文件的路径是我用我的项目

    <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; 
        } 
        } 
    } 
    
    0

    改用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"; 
        } 
    
    } 
    
    +0

    可以将单元的控制移动到另一个单元。所以'FindControl'方法在这里应该很好。 – Pankaj 2012-04-09 08:27:30

    相关问题