如何跨页面保留对象

时间:2011-05-02 12:33:05

标签: c# .net asp.net report

让我先说一下我对c#的新手 目前我必须使用名为Stimulsoft的报告工具

来创建报告

我写了以下课程

 public class HReports
{

    private Stimulsoft.Report.Web.StiWebDesigner designer = new Stimulsoft.Report.Web.StiWebDesigner(); //the designer
    private Stimulsoft.Report.StiReport report = new Stimulsoft.Report.StiReport(); //report
    //other fields


    public HReports(// params)
    {          
     this.designer.PreInit += new Stimulsoft.Report.Web.StiWebDesigner.StiPreInitEventHandler(designer_PreInit); //registers the preinit event
    }


    private void attachData()
    {
     //load data from the database and add it to the report
    }


    public void showReport()
    {
            attachData();
            System.Web.UI.Page page = HttpContext.Current.Handler as System.Web.UI.Page;
            page.Controls.Add(designer); //add Stiwebdesigner to the page
            designer.Design(report); //opens a new page with the designer    
    }
    protected void designer_GetPreviewDataSet(object sender, Stimulsoft.Report.Web.StiWebDesigner.StiPreviewDataSetEventArgs e)
    {
        e.PreviewDataSet = ds; // event that sets the preview dataset
    }
    protected void designer_PreInit(object sender, Stimulsoft.Report.Web.StiWebDesigner.StiPreInitEventArgs e)
    {
        this.designer.GetPreviewDataSet += new Stimulsoft.Report.Web.StiWebDesigner.StiPreviewDataSetEventHandler(designer_GetPreviewDataSet); // register the getpreview dataset 
    }

}

我的问题是,当“designer.Design(report)”被称为stiwebdesigner打开一个新页面时,设计师重新加载页面并显示一个空白页面,因为(我假设因为该对象是在原始页面和对象上创建的在加载页面时迷路了)

如何在新加载的页面上使对象可用? 我已经阅读了一些关于序列化的内容以及可能与它有关的asp页面的视图状态,但我必须知道从哪里开始

提前谢谢

2 个答案:

答案 0 :(得分:3)

使用Session State变量..

ASP.NET会话状态使您能够在用户在 Web应用程序中导航 ASP.NET 页面时为用户存储和检索值

MyType myObject = (MyType)Session["MyObject"];

Session["MyObject"] = myObject;

答案 1 :(得分:1)

可能你可以使用Server.Transfer ...但是更愿意使用会话变量来使用Akram Shahda的答案。