我可能会问一个非常基本的问题而且我很抱歉。
我有一个Web应用程序,它是一种报告门户。我有一个ReportViewer.aspx页面,其上有crystalreportviewer控件,我使用相同的查看器来显示不同的报告。报告是由其他人altogther做的,所以我只有一个.rpt文件,我已经包含在我的项目中。
我动态提供报告数据源,因此没有静态数据绑定。(动态传递参数)
报告通常有多个页面。
问题是当我移动到下一页时,会有一个回发并且它会再次进行所有数据绑定。
如果我在会话中保存reportdocument对象并检查IsPostback并将其从会话中删除,那么它可以正常工作。
问题是这是否是正确的做法。因为如果我打开一个新选项卡并看到相同的报告,我将最终失去我的第一份报告...(我可以通过做一些糟糕的会话管理来避免这种情况,例如在查询字符串中传递guid然后检索正确的报告对象)但是这仍然是正确的方法吗?
任何如何完成的例子都会非常棒......
干杯,
盎司
答案 0 :(得分:1)
好吧,你将ReportDocument保存在会话中并在PostBack中将它绑定到CrystalViewer。
重要的一点是在Page_Init而不是Page_Load中完成所有操作,否则当你点击下一个按钮时,多页水晶报告将停留在第2页......