0

ユーザーがgridviewのリンクをクリックしたときに、.jpg、word、.pdfなどのいくつかの種類のファイルを開く必要があります。現在、私はこのコードを使用していますが、開いていません。

これはWebアプリケーションであり、ユーザーのローカルドライブにあるファイルを開く必要があります。ハイパーリンクのNavigateUrlプロパティでファイルのパスをバインドします

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

2 に答える 2

0

これが私のプロジェクトで使用したものです

<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;
    }
  }
}
于 2012-04-09T08:11:08.193 に答える
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";
    }

}
于 2012-04-09T08:15:31.623 に答える