跨越

2011-05-02 219 views
0
頁面如何保存對象

讓我先說我很新的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頁面的視圖狀態,但我必須知道從哪裏提前啓動

感謝

回答

3

使用Session State變量..

ASP.NET會話狀態使您能夠在用戶導航時存儲和檢索用戶的值ASP.NET頁面Web應用程序

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

Session["MyObject"] = myObject; 
1

也許你可以使用Server.Transfer ...但寧願去與Akram Shahda的回答使用會話變量。