RDLC报告查看器控件 - 如何在另一个窗口/选项卡中打开图像

时间:2012-03-20 19:17:35

标签: asp.net visual-studio-2010 rdlc report-viewer2010

我在varbinary列中的数据库(SQlServer 2008 R2)中有图像。我的报告是在Visual Studio 2010中的ASP.net 3.5中开发的。在我在表格中的报告中,我使用了一个Image,将MIME类型设置为image / jpeg,将图像源设置为Database&图像在报告中正确显示。一切正常!!现在我的问题是,我想添加一个指向该图像的超链接,以便当用户点击图像时,它会以其原始格式在另一个窗口/选项卡中打开。这将有助于用户更仔细地查看图像。 我尝试添加超链接 - 转到URL - 表达式

=“http:// localhost:49170 / MtkMobileDeposit_FailedTransaction / Account / ReportByUserName.aspx?BackImageOriginal =”&领域!BackImageOriginal.Value

但我不能让它只显示图像。相反,它会在新选项卡中显示整个报告。如何首先获取图像的URL?请帮忙。

谢谢, SDD

1 个答案:

答案 0 :(得分:1)

您最好的办法是使用httphandler来处理您的请求。

创建一个将接受记录ID的ImageHandler.ashx。然后你可以得到图像的字节数组,然后把它放到屏幕上。

您的新网址将如下所示

“/ 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;
        }
    }
}