【问题标题】:SSRS: Report loading external images, image not found, can I hide the image controlSSRS:报告加载外部图像,找不到图像,我可以隐藏图像控件吗
【发布时间】:2011-02-10 22:37:00
【问题描述】:

我的 SSRS 报告从报告服务器上的客户编号特定文件夹中为每个客户加载徽标图像。

我写了一个表达式,根据客户编号形成我的图像 URL。

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

我能够使这项工作正常进行,但我面临的问题是,当特定客户没有图像时,我的报告会显示一个红色 X 标记来代替徽标。在这种情况下,我希望隐藏图像控件本身。有什么想法吗???

另一个肮脏的解决方案是确保每个客户特定的文件夹都有指定的图像!即使没有客户的徽标,我也会放置一个可能为方形像素的空白.gif 或 spacer.gif!。

【问题讨论】:

    标签: image reporting-services hide


    【解决方案1】:

    如果没有找到图像,您可以尝试添加一些自定义代码并在 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())
    

    【讨论】:

    • 我想隐藏控件!!!如果无法调整可见性,我可以退回到我提到的肮脏的解决方案。我可以在根文件夹本身中有一个默认图像。更准确地说,是在每个子文件夹中复制,与您的“ImageDefaultURL”解决方案一致!
    • 当然可以调整可见性 - 隐藏控件实际上是相同的想法。第一个在一个地方有默认图像的解决方案意味着您不必根据脏解决方案在每个客户文件夹中复制图像 - 它只存在于一个地方,但如果有客户图像,那么就会显示出来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多