2013-05-16 52 views
2

我有一个gridview它包含文件名和路径的文件(图像和pdf格式文件),我使用了模板字段下,我把1图像buttoon。点击该图像按钮,即查看按钮,我想在新窗口中打开选定的文件。如何在新窗口中打开图片或pdf文件?

这里是我的代码:

protected void GVViewFile_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    int id = GVViewFile.SelectedIndex; 
    string path = GVViewFile.Rows[id].Cells[2].Text.ToString(); 

    Response.Redirect("D:\UploadedAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12.pdf"); 

    Response.Write("<script>"); 
    Response.Write("window.open('" + path + "','_blank', ' fullscreen=yes')"); 
    //Response.Write("window.open(" + path + ",'_blank')"); 
    Response.Write("</script>"); 

} 

,但我不能在新窗口中打开。我的路径返回与response.write()中相同的值。当我只使用response.write("images/UserDetails.pdf");作为例子,它将显示pdf页面..但完整的路径没有采取。它也显示'\'是错误的response.write();所以如何使用实际的完整路径来显示图像或pdf在新窗口..请帮助我.even那个window.open是给错误。我不能在window.open写完整的路径,因为我是从gridview.help请....

获得选择的路径我的GridView代码:

<asp:GridView ID="GVViewFile" runat="server" AutoGenerateColumns="False" 
     DataSourceID="DSforgridview" onselectedindexchanged="GVViewFile_SelectedIndexChanged" 
     HeaderStyle-BackColor="#CC6600" HeaderStyle-ForeColor="White" 
    PagerStyle-BackColor="#CC6600" PagerStyle-ForeColor="White" CellPadding="3" 
    CellSpacing="3" PagerStyle-Width="4" PagerStyle-Height="4" 
    BorderColor="#FF6600" BorderStyle="Solid"> 
     <Columns> 
      <asp:TemplateField ShowHeader="false"> 
     <ItemTemplate> 
      <asp:ImageButton ID="btnView" runat="server" 
       CausesValidation="False" CommandName="Select" 
       ImageUrl="~/Images/view.gif" ToolTip="View File" /> 
     </ItemTemplate> 
     </asp:TemplateField> 

      <asp:BoundField DataField="FileType" HeaderText="FileType" 
       SortExpression="FileType" /> 
      <asp:BoundField DataField="FileLocationPath" HeaderText="FileLocationPath" 
       SortExpression="FileLocationPath" /> 
     </Columns> 
    <HeaderStyle BackColor="#CC6600" ForeColor="White"></HeaderStyle> 
    <EmptyDataTemplate>No Records Found.</EmptyDataTemplate> 
    </asp:GridView> 
+0

@cherhan我粘贴,但概率不是在gridview中,概率是我不能打开新的路径(即像D:\ UploadedAttachment \ AT \ MRD \ AT0520130008_15-05-13-03-57-12.pdf)在新的“ –

+0

”〜/ UploadedAttachment \ AT \ MRD \ AT0520130008_15-05-13-03-57-12.pdf“试试这个... –

+0

您使用的浏览器是什么? – cherhan

回答

5
//In Default2.aspx 
protected void LinkButton1_Click(object sender, EventArgs e) 
    { 
     Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "Default3.aspx")); 
    } 

//------------ 
//In Default3.aspx 

protected void Page_Load(object sender, EventArgs e) 
    { 
     string path = Server.MapPath("~\\E:\\karthikeyan\\venky\\pdf\\aaaa.PDF"); 
     WebClient client = new WebClient(); 
     Byte[] buffer = client.DownloadData(path); 
     if (buffer != null) 
     { 
      Response.ContentType = "application/pdf"; 
      Response.AddHeader("content-length", buffer.Length.ToString()); 
      Response.BinaryWrite(buffer); 
     } 
    } 
+0

你只是试试这个代码 – karthi

+0

嘿谢谢..它的作品:-) –

+0

真棒代码!我正在使用选项2,但是如何在新窗口中打开? –

0

它只能与相对路径工作。 为什么首先你需要路径? 也用户Registerstartupscript脚本绑定到页面。

+0

我会得到路径。所以我只能使用它。路径是完整路径。 wat做什么? –

0

在html响应中,您正在使用url路径进行操作。因此,打开的路径应该是有效的url(绝对或相对于应用程序),或者链接到文件:“file:// path/to/file”,它打开计算机中的某个目录浏览器。

你可以把HyperLink控件与NavigateUrl与目标=“_空白”或一些JavaScript。链接到绝对服务器路径将不起作用。

+0

那么我的解决方案是什么?你能提出一些建议吗? –

0
Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "pdf/aaaa.PDF")); 
+0

嘿如何在那里使用字符串'路径'? –

+0

pdf/aaaa.PDF是你不放的pdf文件的路径〜/或/之前pdf/aaaa.PDF – karthi

+0

我想你没有得到我的观点。我有显示图像,它的路径是在D:\ UploadedAttachment \ AT \ MRD \ AT0520130008_15-05-13-03-57-12.pdf 以下,我从字符串路径获取。 –

0

当你绑定你FileLocationPath,试图绑定它,这样你的文件名

D:\UploadedAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12.pdf 

成为

file:///D:/UploadedAttachment/AT/MRD/AT0520130008_15-05-13-03-57-12.pdf 
+0

显示错误:网页无法显示 –

+0

alrite,你可以截图吗? – cherhan

0

的中止()函数可能是你最好的选择。它是C标准库的一部分,被定义为“导致异常程序终止”(例如,致命错误或崩溃)。

相关问题