我正在使用VS-2008作爲asp.net web應用程序。但是,我在VS 2005中編寫了我的報告(我重複使用了其他項目中開發的一些報告)。ASP.NET水晶報表圖像字段未顯示
報告工作正常,除非圖像字段不顯示。圖像字段是數據庫中的'VARBINARY(MAX)'字段。請注意,當我將Crystal Report導出爲.pdf時,圖像顯示在.pdf文件中。
(*我能看到「螢火蟲」,但得到的消息「加載圖像失敗」的圖像URL)
我使用的是「TypedDataset」作爲數據源的Crystal報表。
我取從數據庫中的數據,並做了「DataSet.WriteXML(文件名,WriteMode.WriteSchema)」
下面是代碼: -
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim rgx As Regex = New Regex("[^a-zA-Z0-9 -]")
strComp = rgx.Replace(strComp, "")
strFile = "tempXML" + strComp + ".xml"
Dim dsTemp As New DataSet
dsTemp.Clear()
dsTemp.Tables.Clear()
Dim rptengine As New CrystalDecisions.CrystalReports.Engine.ReportDocument
rptengine.Load(Session("rptname"))
sdate = CType(Session("sdate"), Date)
edate = CType(Session("edate"), Date)
rptHeading = Session("rptHead")
If IO.File.Exists(Server.MapPath("~/" + strFile)) Then
dsTemp.ReadXml(Server.MapPath("~/" + strFile), XmlReadMode.ReadSchema)
'IO.File.Delete(Server.MapPath("~/" + strFile))
Try
If Session("rptname").ToString.Substring(Session("rptname").ToString.LastIndexOf("\") + 1) _
= "Rptemp.rpt" Then
Dim dsReport As New DDL.dsEmpList
dsReport.Tables("dtEmpList").Merge(dsTemp.Tables(0))
rptengine.SetDataSource(dsReport.Tables(0))
ElseIf Session("rptname").ToString.Substring(Session("rptname").ToString.LastIndexOf("\") + 1) _
= "rptDailyAttendance.rpt" Then
Dim dsReport As New DDL.dsDailyReoprt
dsReport.Tables("dtDailyReport").Merge(dsTemp.Tables(0))
rptengine.SetDataSource(dsReport.Tables(0))
End If
Catch ex As Exception
ShowMsg1("Exception : " & ex.Message)
End Try
'**********************assigning CR-ParameterFields*****************************
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As ParameterValues
Dim crParameterDiscreteValue As ParameterDiscreteValue
Dim parameterToDefine As Boolean = False
crParameterFieldDefinitions = rptengine.DataDefinition.ParameterFields
For Each crParameterFieldDefinition In crParameterFieldDefinitions
crParameterDiscreteValue = New ParameterDiscreteValue
crParameterValues = crParameterFieldDefinition.CurrentValues
Select Case crParameterFieldDefinition.Name
Case "sdate"
parameterToDefine = True
crParameterDiscreteValue.Value = sdate
Case "edate"
parameterToDefine = True
crParameterDiscreteValue.Value = edate
Case "heading"
parameterToDefine = True
crParameterDiscreteValue.Value = rptHeading
Case Else
parameterToDefine = False
End Select
If parameterToDefine Then
Try
crParameterValues.Add(crParameterDiscreteValue)
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
Catch ex As Exception
objdata.writelog(ex.Message, "frmRptEngine", "frmRptEngine_Load", Server.MapPath("~/Reports"))
ShowMsg1("Error in report generation.")
Exit Sub
End Try
End If
Next
rptViewer.ReportSource = Nothing
rptViewer.ReportSource = rptengine
rptViewer.Enabled = True
rptViewer.DataBind()
Else
ShowMsg1("Invalid attempt.")
End If
End Sub
的Html從Firebug的像場是: -