在会话中获取Crystal Report数据

时间:2013-05-21 14:22:37

标签: session crystal-reports-2010

我注意到,当页面索引发生变化时,Crystal报表再次运行Linq查询,这意味着我们从第一页加载第二页? 所以我只想知道我们是否可以获取加载的页面,以便我们可以在会话中保留值。

只需提示即可,因为我无法从Google获得所需的结果。

更新: 我很抱歉,我只是点击了错误的标签。 所以问题就像:

这是我下面的代码,我使用fr运行我的水晶报告:

var rpt = new Result();                    
List<class> lst1 = new DALMethod().Get();
rpt.SetDataSource(lst1);
CRReportViewer.ReportSource = rpt;

当我从第一页切换到两个或更多时,DAL中的这个方法在第一次加载的同时被再次调用,所以我只想在第一次运行查询时将数据存入会话中当我获得页面索引时,我将显示会话中的数据。

有没有办法在这个c#代码中获取页面索引?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,希望这可能有助于其他人: 我使用通用列表作为数据源:

  1. 一旦我们第一次知道页面加载,我的意思是不是回发,我们可以初始化一个列表以便在会话中维护。

  2. 显示报告后,我们可以添加数据源(列表类型)。

  3. 在报告页面上,移位数据将从会话中获取。

    if (!IsPostBack)
    {
     //clear session and create new session
     Session["ReportGenericList"] = null;
    }
    List<class> datasourceLst=null;
    
    if (Session["ReportGenericList"] != null)
      {
        datasourceLst= (List<class>)Session["ReportGenericList"];
      }
    else
      {
       datasourceLst = //call methods to fill datasource
       Session["ReportGenericList"] = datasourceLst;
      }