2016-08-10 5 views
0

Это мой код .Net 2 ASP.Net, который использовался при размещении в Win 2000 и IIS3.Объект Crystal Report не обновляется после IsPostBack

'В Page_Load, если это не PostBack, тогда удалите кешированный объект отчета, чтобы впоследствии этот код был восстановлен.

Под Win2000 и IIS3, когда я нажимал ссылку для загрузки страницы в свежем виде, в Page_Load он вызывал Session.Remove («ReportObject»), а затем в FillRptParams понимал, что Session («ReportObject») «Nothing» и перезагружает его.

Первоначально я ввел весь код сеанса, чтобы убедиться, что между запросами страницы Crystal Report он не будет продолжать работать с БД, он просто вытащил ReportObject из переменной сеанса на следующей странице.

Теперь я переключился на Win 2003 и IIS6. Я ВСЕГДА получаю ОБРАБОТАННЫЙ отчет, даже когда вы нажимаете на ссылку, как я привык, что по сути заставляет IsPostBack быть ложным и удалять объект Session.

Я надеюсь, что некоторые настройки в 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 

ответ

0

Переместите свой код в поле Page_init, а не в page_load. И подавляйте свой «if postback code», когда вы его переместили.

+0

Hi. Спасибо за это. Page_Init запускается при каждом запуске страницы и удалении объекта Session. Мне нужно, чтобы он обнаружил PostBack, когда щелкнул элемент управления навигацией страницы Crystal Report и оставил объект Session в такте. –

+0

Зачем вам нужно воссоздать объект отчета? CR предназначен для создания один раз, а затем кэшируется для перехода между страницей – Furtiro