我有一个带有水晶报表查看器的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" />
答案 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条件的情况下导航时保持值。
祝你好运