2009年12月14日 星期一

保存DataTable

在window form的程式中,DataSet或DataTable的存續在window form程式設計師眼裡視之理所當然,但是在web form就不是這般,因為web的本質在使用者發出要求(Request),web server依據要求處理後再回應(Response)給使用者,二者之間的關係在工作結束後就中斷了,這些 In memory物件(DataSet、DataTable)就會消失,如果要保留DataSet、DataTable可以利用Session或ViewState來保留,下面介紹利用ViewState使DataTable得以存續

protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
if (ViewState["_dt"] != null)
{
dt = (DataTable)ViewState["_dt"];
}
}

protected override object SaveViewState()
{
ViewState["_dt"] = dt;
return base.SaveViewState();
}

上面的程式片段將利用DataTable存入ViewState及ViewState明確轉型為DataTable,令DataTable得以存續,不過在使用時至少要考慮一些問題
1)系統頻寛
2)系統Loading
因為是存在ViewState所以對於使用者與Server往來的流量就會增加,另外使用者的瀏覽器在解析時也會較慢,還有在ViewState轉型成DataTable也會耗用資源,以上都是在使用時要考量的。

沒有留言:

張貼留言