我有一个gridview,它包含文件名和文件路径(图像和pdf格式文件),在我使用的模板字段下,我放了1个图像但是。点击该图像按钮,即查看按钮我想在新窗口中打开所选文件。
这是我的代码:
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 ..请帮助我....即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 :(得分: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);
}
}
答案 1 :(得分:0)
它仅适用于相对路径。 为什么首先需要路径? 还有用户Registerstartupscript用于脚本绑定到页面。
答案 2 :(得分:0)
在html响应中,您正在使用url路径。所以打开的路径应该是有效的url(绝对或相对于应用程序),或链接到文件:“file:// path / to / file”,它在计算机中打开一些目录浏览器。
你可以使用带有target =“_ blank”或一些javascript的NavigateUrl放置HyperLink控件。链接到绝对服务器路径将不起作用。
答案 3 :(得分:0)
Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "pdf/aaaa.PDF"));
答案 4 :(得分: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
答案 5 :(得分:0)
abort()函数可能是你最好的选择。它是C标准库的一部分,定义为“导致程序异常终止”(例如,致命错误或崩溃)。