2016-05-16 59 views
-2

我的問題是,我保存DataTableViewState,但當頁面回發(gridview行編輯點擊)它返回nullViewState是空OnPostBack

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DataSet ds = new DataSet(); 
     ds.ReadXml("c:\\teste.xml"); 
     gv_xml.DataSource = ds.Tables[1]; 
     gv_xml.DataBind(); 
     ViewState.Add("dt", ds.Tables[1]); 
     SaveViewState(); 
    } 
} 

protected void gv_xml_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    gv_xml.EditIndex = e.NewEditIndex; 
    gv_xml.DataSource = (DataTable)ViewState["dt"]; 
    gv_xml.DataBind(); 
} 

任何幫助,將不勝感激。

回答

0

更換方法ViewState.Add爲

ViewState[dt]=ds.Tables[1]; 

這應該工作,如果沒有,你需要檢查你的web.config有視圖狀態啓用

 <system.web> 
<pages enableViewState="false" /> 
+0

謝謝回覆,但我已經更改爲ViewState [dt] = ds.Tables [1];它仍然不起作用。我也檢查了web.config並且ViewState已啓用 – mousie

+0

是您的方法ReadXML返回與null不同的內容嗎?也許這就是問題所在。 – thepanch

+0

是的,我的ReadXml方法正在返回一個項目列表,但當頁面回傳視圖狀態的值,並在GridView丟失 – mousie