2010-03-03 3 views
2

У меня есть страница asp.net (2.0) с программой просмотра отчетов Crystal. Я использую следующий код в методе page_load()Проблема CrystalReportViewer при навигации между страницами

if (!Page.IsPostBack) 
    { 
     Session["REP"] = null; 
    } 
    ReportDocument report; 
    if (Session["REP"] == null) 
    { 
     report = new ReportDocument(); 
     report.Load(Server.MapPath("reports\\rptListItems.rpt")); 
     report.SetDatabaseLogon(Session["DB_USER"].ToString(), 
           Session["DB_PWD"].ToString(), 
           Session["DB_ODBC"].ToString(), "DBNAME"); 
     Session["REP"] = report; 
    } 
    else 
    { 
     report = (ReportDocument)Session["REP"]; 
    } 
    rptItems.ReportSource = report; 

При нажатии на кнопку «следующая страница» на панели инструментов просмотра Crystal Report, он идет на странице 2, как должно, и после этого она просто остается там даже если я снова нажимаю следующую кнопку. Я попытался добавить программную кнопку, которая сделала .ShowNextPage, но показала то же поведение. В чем причина?

В случае помогает, мой кристалл управления для просмотра отчетов объявлен ниже

<CR:CrystalReportViewer ID="rptItems" runat="server" AutoDataBind="true" 
      EnableDatabaseLogonPrompt="False" 
      EnableParameterPrompt="False" Height="50px" 
      ReuseParameterValuesOnRefresh="True" Width="800px" 
      DisplayGroupTree="False" 
      HasCrystalLogo="False" /> 

ответ

0

я нашел решение в другой странице и ... это работает! Как? Поместите код в метод page_init(). Этот способ сохраняет значения при навигации без условия isPostBack.

Успехов

1
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["UID"].ToString() == "0" || Session["UID"].ToString() == "" && Session["CID"].ToString() == "0" || Session["CID"].ToString() == "") 
    { 
     Response.Redirect("Login.aspx"); 
    } 
    else 
     Response.Cache.SetExpires(DateTime.Now.AddDays(-1)); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    if (IsPostBack) 
    { 
     lblStatus.Text = ""; 
     function(); 
    } 
} 
protected void Page_UnLoad(object sender, EventArgs e) 
{ 
    ReportDocument crystalReport = new ReportDocument(); 
    this.CrystalReportViewer1.Dispose(); 
    this.CrystalReportViewer1 = null; 
    crystalReport.Close(); 
    crystalReport.Dispose(); 
    GC.Collect(); 
}