Refer the below code for your reference and implement it as per your code logic. In some bowsers its work properly to open pdf as in new window and in some it’s get open like download file. Its depend on browsers functionality.
For this you need to open file in new page as done in sample.
Default.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView runat="server" ID="grvDocuments" Width="100%" CssClass="table table-bordered"
AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="S.No">
<ItemTemplate>
<asp:Label ID="lblRowNumber" Text='<%# Container.DataItemIndex + 1 %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Text" HeaderText="Document Name" />
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:HyperLink ID="lnkView" Text="View" NavigateUrl='<%# Eval("Value", "~/ViewPdfPage.aspx?fileName={0}") %>'
runat="server" Target="_blank" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["id"] != null)
{
int ITCode = int.Parse(Request.QueryString["id"].ToString());
GetDocuments(ITCode);
}
}
}
protected void GetDocuments(int ITCode)
{
string[] filePaths = Directory.GetFiles((@"C:\Assets docs" + ITCode));
List<ListItem> files = new List<ListItem>();
foreach (string filePath in filePaths)
{
files.Add(new ListItem(Path.GetFileName(filePath), filePath));
}
grvDocuments.DataSource = files;
grvDocuments.DataBind();
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
If Request.QueryString("id") IsNot Nothing Then
Dim ITCode As Integer = Integer.Parse(Request.QueryString("id").ToString())
GetDocuments(ITCode)
End If
End If
End Sub
Protected Sub GetDocuments(ByVal ITCode As Integer)
Dim filePaths As String() = Directory.GetFiles(("C:\Assets docs" & ITCode))
Dim files As List(Of ListItem) = New List(Of ListItem)()
For Each filePath As String In filePaths
files.Add(New ListItem(Path.GetFileName(filePath), filePath))
Next
grvDocuments.DataSource = files
grvDocuments.DataBind()
End Sub
ViewPdfPage.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string filePath = Request.QueryString["fileName"];
Response.ContentType = "Application/pdf";
Response.WriteFile(filePath);
Response.End();
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim filePath As String = Request.QueryString("fileName")
Response.ContentType = "Application/pdf"
Response.WriteFile(filePath)
Response.[End]()
End If
End Sub
Screenshot
