2010-04-22 3 views
4

내 SSRS 보고서는 보고서 서버의 고객 번호 별 폴더에서 각 고객의 로고 이미지를로드합니다.SSRS : 외부 이미지로드, 이미지를 찾을 수 없음, 이미지 컨트롤을 숨길 수 있습니까?

나는 고객 번호를 기반으로 이미지에 대한 내 URL을 형성하기 위해 표현식을 작성합니다.

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

나는이 작업을 얻을 수 있어요,하지만 난에 직면 문제는 특정 고객이 이미지가없는 경우, 다음 내 보고서는 로고 대신에 빨간색 X 표시를 보여주고있다. 이 경우 이미지 컨트롤 자체를 숨길 것으로 예상됩니다. 이견있는 사람????

다른 더러운 해결책은 각 고객의 특정 폴더에 지정된 이미지가 있는지 확인하는 것입니다. 고객을위한 로고가 없더라도 치수가 정사각형 인 blank.gif 또는 spacer.gif를 배치 할 것입니다.

답변

5

당신은 일부 사용자 지정 코드를 추가하는 시도하고 이미지가 발견되지 않는 경우 기본 이미지를로드 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()) 
+0

! ! 내가 언급 한 것처럼 더러운 해결책으로 넘어갈 수 있습니다. 가시성을 조정할 수없는 경우입니다. 루트 폴더 자체에 기본 이미지가있을 수 있습니다. 각 하위 폴더에 "ImageDefaultURL"솔루션의 인라인으로 복제되는 것이 아니라 더 정확하게 말하십시오! – Nauman

+0

물론 가시성을 조정할 수 있습니다. 컨트롤을 숨기는 것은 실제로 같은 생각입니다. 한 곳에서 기본 이미지가있는 첫 번째 솔루션은 더러운 솔루션에 따라 모든 고객 폴더의 이미지를 복제 할 필요가 없음을 의미합니다. 한 곳에서만 존재하지만 고객 이미지가있는 경우 대신 표시됩니다. –

관련 문제