2013-05-27 22 views
0

我有一个DataSet1其中4 rows我绑定到GridView1
GridView1有一个Edit (image) command
当用户点击第1行时,在RowEditing event中,我将删除DataSet1中的特定行(第0行)并更新GridView1
EditIndex为0并重新绑定DataSet1GridView1GridView更改RowEditing上的EditIndex然后取消ViewState中的编辑收益错误

GridView1.EditIndex = 0; 
GridView1.DataSource = DataSet1; 
GridView1DataBind(); 

用户取消编辑时出现问题。我正在错误:

Failed to load viewstate. 
The control tree into which viewstate is being loaded must match the control 
tree that was used to save viewstate during the previous request. 

例如,动态地添加控件时,一个后回过程中添加的控制必须在初始请求期间添加的控件的类型和位置相匹配。

这似乎是由于我设置的原始EditIndex(行1)和新的EditIndex(第0行)不匹配。

回答

0

我找到了解决方案。 ViewState中的不匹配是因为当GridView1.EditIndex更新时,事件参数字段e.NewEditIndex的值(我猜是更新ViewState)没有更新。请参阅下面更新的代码:

GridView1.EditIndex = 0; 
e.NewEditIndex = 0; 
GridView1.DataSource = DataSet1; 
GridView1DataBind();