Исключение, когда я пытался обновить свой gridview в asp.net

Когда я пытался обновить свой gridview, который подключен с помощью <asp:LinqDataSource> Включив обновление и удаление в этом источнике данных, я получил исключение, сказавшее мне, что:

Ошибка времени выполнения javaScript: Sys.WebForms.PageRequestManagerServerErrorException: не удалось найти строку, которая соответствует указанным ключам в исходных значениях, хранящихся в ViewState. Убедитесь, что словарь 'keys' содержит уникальные значения ключей, которые соответствуют строке, возвращенной из предыдущей операции Select.

Как я могу решить это исключение?

4 ответа

Решение

Вы должны добавить DataKeyNames="ID" в свойствах Gridview идентификатор является ключевым столбцом таблицы базы данных.

Может быть, вы удаляете некоторые строки во время зацикливания или используете ViewState вида сетки. Попробуйте взять фиктивный вид данных, чтобы удалить необходимые строки.

Только что получил ошибку при обновлении старого проекта VB.net, и даже он работает в старом, и новый проект также VB.Net, "DataKeyName" является CASE-SENTIVE....

Это означает, чтоKeyId не совпадает с KeyID

Dammm...

Это похоже на то, как вы привязывали грид к некоторым другим данным, когда страница отправляется обратно на сервер - коллекция ключей сохраняется в ViewState при рендеринге страницы, пользователь выбирает одну строку, но на сервере вы перепривязываете сетку и выбранный пользователем ключ недоступен в коллекции ключей.

Другие вопросы по тегам