2012-03-20 10 views
0

varbinary列のデータベース(SQlServer 2008 R2)にイメージがあります。私のレポートはVisual Studio 2010のASP.net 3.5で開発されました。私のレポートでは、画像を使用してMIMEタイプをimage/jpegに設定し、画像ソースをデータベース&としてレポートに正しく表示します。すべてが動作します!今私の問題は、その画像へのハイパーリンクを追加して、ユーザーが画像をクリックしたときに別のウィンドウ/タブで元の形式で開くようにすることです。これにより、ユーザーは画像をより詳しく見ることができます。 私はハイパーリンクを追加しようとしました - 表現RDLCレポートビューアコントロール - 別のウィンドウ/タブで画像を開く方法

= - URLに行く! "のhttp:// localhostを:49170/MtkMobileDeposit_FailedTransaction /アカウント/ ReportByUserName.aspx BackImageOriginal =" &フィールドBackImageOriginal.Value

しかし、私はできませんイメージのみを表示するようにしてください。代わりに、レポート全体を新しいタブに表示します。最初に画像のURLを取得するにはどうすればよいですか?助けてください。

おかげで、 SDD

答えて

1

あなたの最善の策は、あなたのリクエストを処理するためにHTTPHandlerのを使用することです。

レコードIDを取得するImageHandler.ashxを作成します。次に、イメージのバイト配列を取得して、それを画面に配置することができます。

新しいURLは、コードの

"/ImageHandler.ashx?Record_ID=" &フィールズ!RecordId.Valueよう

public class ImageHandler : IHttpHandler 
{ 

    public int Record_ID 
    { 
     get { return Convert.ToInt32(HttpContext.Current.Request.QueryString["Record_ID"]); } 

    } 

    public void ProcessRequest(HttpContext context) 
    { 
     // get image from database into a byte array 
     Component.ImageController objImageController = new Component.ImageController(); 
     Component.ImageInfo objImageInfo = objImageController.getImage(Record_ID); 
     byte[] byteArray = objImageInfo.photo; 

     // output it to the screen 
     context.Response.Clear(); 
     context.Response.ContentType = "image/jpeg"; 
     context.Response.BinaryWrite(byteArray); 

     context.ApplicationInstance.CompleteRequest(); 

    } 



    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 
+0

感謝を見ていきます。私はhttpHandlerを作成しました。 ashxファイル(「http:// localhost:49170/MtkMobileDeposit_FailedTransaction/Account/ReportByUserName.aspx/ImageHandler.ashx?ID = "&Fields!ID.Value」を指すようにレポート内にUrlリンクを追加しました)レポートを実行すると正しいURLで新しいウィンドウが開きますが、イメージは表示されません。私は設定ファイルに欠けているいくつかの設定はありますか? – sdd

+0

"../ReportByUserName.aspx/ImageHandler.ashx?ID"のような正しいURLを持っていますか?URLに "ReportByUserName.aspx"はありません。 –

関連する問題