Das ist mein .Net 2 ASP.Net-Code, der früher funktionierte, wenn er auf Windows 2000 und IIS3 gehostet wurde.Crystal Report-Objekt wird nach IsPostBack nicht aktualisiert
'In Page_Load, wenn es kein PostBack ist, dann entfernen Sie das zwischengespeicherte Berichtsobjekt, so dass der Code später neu erstellt werden muss. Wenn ich in Win2000 und IIS3 auf einen Link geklickt habe, um die Seite frisch zu laden, würde ich in PageLoad Session.Remove ("ReportObject") aufrufen, dann in FillRptParams die Session ("ReportObject") auf Nothing setzen und neu laden.
Ich legte zunächst den gesamten Session-Code ein, um sicherzustellen, dass zwischen Crystal Report-Seitenanforderungen nicht weiter zur DB gegangen würde, sondern einfach das ReportObject von der Sitzungsvariablen zur nächsten Seite.
Jetzt habe ich auf Win 2003 und IIS6 geschaltet Ich bekomme IMMER den gleichen Bericht serviert, auch wenn ich auf den Link wie ich verwendet, was im Wesentlichen verursacht IsPostBack falsch und entfernen Sie das Session-Objekt.
Ich hoffe, dass es einige Einstellungen unter IIS6, die es sich wie gewohnt verhalten können.
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
Hallo. Danke dafür. Page_Init wird bei jedem Seitenlauf ausgelöst und entfernt das Session-Objekt. Ich muss ein PostBack erkennen, wenn auf das Seitennavigationssteuerelement Crystal Reports geklickt wird, und das Sitzungsobjekt intakt lassen. –
Warum müssen Sie Ihr Berichtsobjekt neu erstellen? CR wurde so entworfen, dass es einmal erstellt und dann zwischengespeichert wird, um zwischen den Seiten zu navigieren – Furtiro