2015-09-27 49 views
0

考虑以下代码如何防止asp.net页面重置数据表?

DataTable dt = new DataTable() ; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
      dt.Columns.Add("RowIndex"); 
      dt.Columns.Add("FilterText"); 
    } 

我将用一些数据执行程序中填写这个数据表。但是当我点击一个按钮,页面将重新加载代码,我的数据将会丢失。 我该如何防止Web窗体创建新的数据表并保存我的数据?

我的控件位于更新面板中。

回答

0

为每个请求创建该类的新实例。如果你想从一个请求保存到另一个请求,你需要使用不同的机制。

例如一个全球性的。但是在全局通常的问题之上,您需要处理多个并发请求,从而实现多线程和锁定。

通常的做法是将持久状态存储在数据库中,在处理该请求的开始时加载每个请求的信息。

+0

多么困难解决方案!!!! – Behnam

+0

@Behnam:客户端更难:HTTP是无状态的。 – Richard

0

您可以使用视图状态来解决问题..

DataTable dt; 

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      dt = new DataTable(); 
      dt.Columns.Add("RowIndex"); 
      dt.Columns.Add("FilterText"); 
     } 
     else 
     { 
      if (ViewState["vsDT"] != null) 
       dt= ViewState["vsDT"] as DataTable; 
     } 
    } 
+0

不错的答案。 @RAVI VAGELA –