2

ファイル名とファイルのパス(画像および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ページが表示されます..しかし、フルパスは使用されません。'\'また、実際のフルパスを使用して新しいウィンドウに画像またはPDFを表示する方法が間違っていることも示していresponse.write();ます。window.openがエラーを出していることでも助けてください。 gridview.help からのパスをください....

私のグリッドビューコード:

 <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>
4

6 に答える 6

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);
        }
    }
于 2013-05-16T07:57:56.033 に答える
0

相対パスのみで機能します。そもそもなぜパスが必要なのですか?また、ページへのスクリプト バインド用に Registerstartupscript を使用します。

于 2013-05-16T05:23:21.123 に答える
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
于 2013-05-16T06:40:07.247 に答える
0
 Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "pdf/aaaa.PDF"));
于 2013-05-16T06:34:07.073 に答える
0

HTML 応答では、URL パスを操作しています。したがって、開くパスは有効な URL (絶対またはアプリケーションへの相対)、またはファイルへのリンクである必要があります: 「file://path/to/file」。これにより、コンピューターのディレクトリ ブラウザーが開きます。

target="_blank" または JavaScript を使用して NavigateUrl を使用して HyperLink コントロールを配置するだけです。絶対サーバー パスへのリンクは機能しません。

于 2013-05-16T05:23:42.533 に答える