RDLC Report Viewer Control - Как открыть изображения в другом окне / вкладке - PullRequest
0 голосов
/ 20 марта 2012

У меня есть изображения в базе данных (SQlServer 2008 R2) в столбце varbinary. Мой отчет разработан в ASP.net 3.5 в Visual Studio 2010. В своем отчете в таблице я использую изображение, для MIME-типа задаем значение image / jpeg, источником изображения является база данных, и изображение отображается в отчете правильно. Все работает!! Теперь моя проблема в том, что я хотел бы добавить гиперссылку на это изображение, чтобы, когда пользователь нажимает на изображение, оно открывалось в другом окне / вкладке в исходном формате. Это поможет пользователю ближе познакомиться с изображением. Я пытался добавить гиперссылку - Перейти к URL - Выражение

= "http://localhost:49170/MtkMobileDeposit_FailedTransaction/Account/ReportByUserName.aspx?BackImageOriginal=" & Поля! BackImageOriginal.Value

Но я не могу заставить его отображать только изображение. Вместо этого он отображает весь отчет в новой вкладке. Как мне сначала получить URL для работы изображений? Пожалуйста, помогите.

Спасибо, SDD

1 Ответ

1 голос
/ 21 марта 2012

Ваш лучший выбор - использовать httphandler для обработки вашего запроса.

Создайте ImageHandler.ashx, который будет принимать идентификатор записи.Затем вы можете получить байтовый массив изображения и вывести его на экран.

Ваш новый URL будет выглядеть как

"/ ImageHandler.ashx? Record_ID =" & Fields! 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;
        }
    }
}
...