CrystalReportViewer проблема с перемещением между страницами - PullRequest
2 голосов
/ 03 марта 2010

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

   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, она переходит на страницу 2, как и должна, и после этого просто остается там, даже если я снова нажимаю кнопку «Следующая». Я попытался добавить программно кнопку, которая выполняла .ShowNextPage, но демонстрировала то же поведение. В чем может быть причина?

Если это помогает, мой элемент управления просмотра отчетов Crystal объявлен как показано ниже

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

Ответы [ 2 ]

1 голос
/ 22 февраля 2012
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();
}
0 голосов
/ 06 марта 2010

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

Удачи

...