2016-05-16 55 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