2012-08-06 61 views
1

因爲我對網頁很陌生,所以我需要一個關於這個基本主題的手。如何使對象在整個頁面中可見?

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      UserLogin ObjUser = new UserLogin(); 
      Persona ObjPersona = new Persona(); 
      DataSet ds = new DataSet(); 
      string UserName = null; 
      UserName = WindowsIdentity.GetCurrent().Name; 
      UserName = Regex.Replace(UserName, ".*\\\\(.*)", "$1", RegexOptions.None);     
      ds = ObjUser.GetUserData(UserName); 
      ObjPersona.UserName = UserName; 
      ObjPersona.RealName = ds.Tables[0].Rows[0][0].ToString(); 
      ObjPersona.Ranking = ds.Tables[0].Rows[0][1].ToString(); 
      if (((bool)ds.Tables[0].Rows[0]["TNT"] == false)) ObjPersona.TNT = false; 
      else ObjPersona.TNT = true; 
      if (((bool)ds.Tables[0].Rows[0]["TLG"] == false)) ObjPersona.TLG = false; 
      else ObjPersona.TLG = true; 
      if (((bool)ds.Tables[0].Rows[0]["NEG"] == false)) ObjPersona.Negocios = false; 
      else ObjPersona.Negocios = true; 
      if (((bool)ds.Tables[0].Rows[0]["RES"] == false)) ObjPersona.Residenciales = false; 
      else ObjPersona.Residenciales = true; 
      if (((bool)ds.Tables[0].Rows[0]["BO"] == false)) ObjPersona.BO = false; 
      else ObjPersona.BO = true; 
      if (((bool)ds.Tables[0].Rows[0]["BOA"] == false)) ObjPersona.BOA = false; 
      else ObjPersona.BOA = true; 
      ObjUser.CreateRegister(ObjPersona); 
     } 
    } 

一旦頁面被加載,一個簡單的執行。存儲過程填充數據集,然後使用數據集將數據放入對象中,在這種情況下爲ObjPersona

現在,當我打算在另一個電話中使用ObjPersona時,讓我們假設。

protected void BtnClose_Click(object sender, EventArgs e) 
    {    
     ObjUser.UpdateRegister(ObjPersona); 
     LblClose.Text = "Sesión Cerrada"; 
    } 

由於這裏沒有數據,所以不起作用。 (一旦我想使用對象內的數據,就會發生錯誤)

我想調用一次獲取用戶數據的過程(這種情況下是page_load),並從那裏使用它。我如何訪問其他控件中調用的數據?

謝謝。

回答

3

爲每個請求創建一個新的asp.net Page對象實例。每次您回發到頁面時,都會調用事件處理函數Init,Load。你不是在處理同一個對象。

如果您在上次請求期間填充了一個成員變量,則此次將不可用。

您需要使用一些方法來持續保留跨回傳數據。

Asp.net提供了兩種內置方法來執行此操作。一個是ViewState,另一個是Session。會話變量存儲在服務器上,並且ViewState數據存儲在窗體中的隱藏輸入變量中。

如果您在DataSet中有大量數據,請避免將其放入ViewState。它會創建一個大的ViewState並使頁面加載速度變慢。

+0

非常感謝,DataSet中保存的數據並不多。將花一些時間閱讀關於Session和ViewState的信息,看看哪個更適合這個項目。 – 2012-08-06 20:01:14

相關問題