SSRS: отчет о загрузке внешних изображений, изображение не найдено, можно ли скрыть элемент управления изображением - PullRequest
4 голосов
/ 22 апреля 2010

В моем отчете SSRS загружаются изображения логотипов для каждого клиента из определенной папки с номером клиента на сервере отчетов.

Я пишу выражение, чтобы сформировать свой URL к изображению на основе номера клиента.

..."http://localhost/images/" + iCustomerNumber.ToString() + "/logo.gif"

Я могу заставить это работать, но проблема, с которой я сталкиваюсь, состоит в том, что, когда у определенного клиента нет изображения, тогда мой отчет показывает красную X-метку вместо логотипа. В этом случае я ожидаю скрыть сам элемент управления изображением. Есть мысли ????

Другим грязным решением будет обеспечение того, чтобы в каждой папке для конкретного клиента было назначенное изображение! даже если у клиента нет логотипа, я помещу blank.gif или spacer.gif, вероятно, квадратного пикселя в размере!.

1 Ответ

5 голосов
/ 23 апреля 2010

Вы можете попробовать добавить собственный код и использовать его в свойстве Image.Value для загрузки изображения по умолчанию, если изображение не найдено:

Public Function GetImage(ByRef CustomerNumber As String) As String
    ' Customer image
    Dim ImageCustomerURL As String
    ImageCustomerURL = "http://localhost/images/" + CustomerNumber + "/logo.gif"
    ' Default Image if customer image does not exist
    Dim ImageDefaultURL As String
    ImageDefaultURL = "http://localhost/images/default.gif"

    ' Create a web request to see if customer image exists
    Dim m_Req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(ImageCustomerURL)   
    Try
        Dim HttpWResp As System.Net.HttpWebResponse = CType(m_Req.GetResponse(), System.Net.HttpWebResponse)
        If HttpWResp.StatusCode = System.Net.HttpStatusCode.OK
            Return ImageCustomerURL
        Else
            Return ImageDefaultURL 
        End If
    Catch ex As System.Net.WebException
        If ex.Status = System.Net.WebExceptionStatus.ProtocolError Then
            Return ImageDefaultURL 
        End If
    End Try
    Return ImageDefaultURL 
End Function

Тогда ваше выражение свойства Image.Value будет:

=Code.GetImage(iCustomerNumber.ToString())

Редактировать: установить свойство Visibility.Hidden вместо использования изображения по умолчанию

Что ж, я подумал, что было бы лучше иметь изображение по умолчанию, а не пробел, но на самом деле это та же идея:

Public Function HideImage(ByRef CustomerNumber As String) As Boolean
    ' Customer image
    Dim ImageCustomerURL As String
    ImageCustomerURL = "http://localhost/images/" + CustomerNumber + "/logo.gif"

    ' Create a web request to see if customer image exists
    Dim m_Req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(ImageCustomerURL)   
    Try
        Dim HttpWResp As System.Net.HttpWebResponse = CType(m_Req.GetResponse(), System.Net.HttpWebResponse)
        If HttpWResp.StatusCode = System.Net.HttpStatusCode.OK
            Return False
        Else
            Return True
        End If
    Catch ex As System.Net.WebException
        If ex.Status = System.Net.WebExceptionStatus.ProtocolError Then
            Return True
        End If
    End Try
    Return True
End Function

Тогда ваше выражение свойства Visibility.Hidden будет:

=Code.HideImage(iCustomerNumber.ToString())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...