IsPostBack后Crystal Report对象未刷新

时间:2016-08-10 16:08:04

标签: asp.net crystal-reports ispostback

这是我的.Net 2 ASP.Net代码,它曾经在Win 2000和IIS3上托管时工作。

'在Page_Load中,如果它不是PostBack,则删除缓存的报表对象,以便稍后强制该代码重建它。

在Win2000和IIS3下单击链接以加载页面时,在Page_Load中它将调用Session.Remove(“ReportObject”),然后在FillRptParams中实现Session(“ReportObject”)为Nothing并重新加载。 / p>

我最初将所有会话代码放入其中以确保在Crystal Report页面请求之间不会继续访问数据库,它只会将会话变量中的ReportObject显示在下一页。

现在我已经切换到Win 2003和IIS6我总是得到SAME报告,即使点击链接,因为我习惯了导致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

1 个答案:

答案 0 :(得分:0)

在Page_init事件中移动代码,而不是在page_load中移动代码。 移动它后,请禁止“if postback code”。