CrystalReportViewer在页面之间导航的问题

时间:2010-03-03 02:12:29

标签: c# asp.net crystal-reports asp.net-2.0

我有一个带有水晶报表查看器的asp.net(2.0)页面。我在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;

当我按下水晶报告查看器工具栏上的“下一页”按钮时,它会按原样进入第2页,之后即使再按下一个按钮,它也会停留在那里。我尝试以编程方式添加一个按钮,该按钮执行.ShowNextPage但显示相同的行为。可能是什么原因?

如果有帮助,我的水晶报表查看器控件声明如下

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

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

我在其他页面找到了解决方案......它有效!怎么样?将代码放在page_init()方法中。这种方式在没有isPostBack条件的情况下导航时保持值。

祝你好运