これは、Windows 2000およびIIS3でホストされていたときに使用されていた.NET 2 ASP.Netコードです。Crystal ReportオブジェクトがIsPostBack後にリフレッシュされない
'Page_Loadでは、PostBackでなければキャッシュされたレポートオブジェクトを削除して、後でそのコードを強制的に再構築するようにします。
Win2000とIIS3の場合、Page_Loadでは、Session.Remove( "ReportObject")が呼び出され、Session( "ReportObject")はNothingであり、リロードされます。
最初にすべてのセッションコードを挿入して、Crystal Reportページ要求の間にDBにアクセスしないようにすると、次のページを表示するセッション変数からReportObjectをプルするだけです。
今私はWindows 2003とIIS6に切り替えました。これは、私が本質的にIsPostBackをfalseにしてセッションオブジェクトを削除するようにリンクをクリックしても、常にSAMEレポートを提供します。
私は、以前と同じように動作させることができるIIS6ではいくつかの設定があると考えています。
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
Session.Remove("ReportObject")
End If
End Sub
Sub FillRptParams(ByVal snavcode As String, Optional ByVal CrystalOrPDForEXCEL As String = "")
If Not Session("ReportObject") Is Nothing Then
bReportCached = True
Else
bReportCached = False
End If
oSqlCmd = New SqlCommand
If bReportCached Then
orpt = Session("ReportObject")
Else
orpt = New rptUsageSummaryNew
oSqlCmd.CommandText = "HOSP_RPT_UsageAllSummary"
oDS = oDataAccess.GetReportDataSet(Session("Group"), oSqlCmd)
orpt.SetDataSource(oDS)
'Cache the report object so we don't have to load it again next time
Session.Remove("ReportObject")
Session.Add("ReportObject", orpt)
End If
End Sub
こんにちは。ありがとう。 Page_Initは、ページの実行ごとに起動し、Sessionオブジェクトを削除します。 Crystal ReportsのページナビゲーションコントロールをクリックしてSessionオブジェクトをそのままの状態にしておくと、PostBackを検出する必要があります。 –
なぜレポートオブジェクトを再作成する必要がありますか? CRは一度作成されるように設計されてから、キャッシュされてページ間を移動します – Furtiro