2010-09-08 64 views
2

我正在用ISeries創建一個後端Web應用程序。 在頁面加載中,我正在填充一個數據表並將其用作我的gridview的數據源。從不同方法訪問數據表

從同一頁面上的其他方法訪問數據表中的數據的最佳方式是什麼?在其他網頁?

我現在的做法是從gridview中獲取數據並填充到另一個數據表中,然後使用它...有沒有更好的方法可以做到這一點?在會話中存儲它是一個好主意?

public partial class Main : System.Web.UI.Page 
{ 
public DataTable dt; 
protected void Page_Load(object sender, EventArgs e) 
{ 
     loadData ld = new loadData(); 
     dt = ld.loadTable(); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
} 
protected void btn_Click(object sender, EventArgs e) 
{ 
    foreach (DataRow row in dt.Rows) 
    { 
     // do something 
    } 
} 
} 

回答

0

您可以將其存儲在ViewState。

OnPageLoad (or Init, depending on what you use it for) 
    Date In Viewstate? 
     Load into local variable 
    else 
     Create data table in local variable 
     Save to view state 

現在,您可以通過局部變量從頁面中的任何位置訪問它。

如果您在多個頁面中需要它,您可以在超類中執行所有操作,並讓您的本地頁面擴展該類。

1

由於Ranhiru說你可能使用緩存,但我個人只有這樣做,如果你真的需要。您是否遇到需要克服的性能問題?

如果你不這樣做,我會避免緩存,因爲這會使你的系統設計複雜化。我也肯定會避免嘗試在頁面之間使用相同的數據表(可以這樣做的唯一方法就是存儲在會話狀態中)。正如Kendrick提到的,您可以使用ViewState來存儲數據表但我不認爲你可以通過這種方式將數據從一個頁面傳遞到另一個頁面

我建議在重定向到另一個頁面之前在回發中保存對數據庫的所有更改,然後在其他頁面從數據庫中重新讀取數據

+0

由於數據在ISeries上,所以如果我每次去數據庫都會遇到性能問題,關於Ranhiru的建議,我嘗試過緩存,它適用於我的目的。使用緩存方法的缺點,我也樂於嘗試其他方法。 – 2010-09-08 15:38:12