2013-05-27 1 views
0

У меня есть DataSet1, у которого есть 4 rows, который я связываю с GridView1.
GridView1 имеет Edit (image) command.
Когда пользователь нажимает на строку 1, в RowEditing event я удаляю определенную строку (строку 0) в DataSet1 и обновляю GridView1.
EditIndex to 0 и rebind DataSet1 до GridView1.GridView Изменение EditIndex на RowEditing, а затем Отмена Разрешения редактирования в ViewState Error

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(); 
Смежные вопросы