У меня есть простая страница, которая при начальной загрузке привязывает данные к GridView. В этом сеточном представлении включена сортировка и подкачка страниц, а также он окружен панелью обновления.
Когда пользователь делает следующее, я получаю эту ошибку:
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
- Кликает на пейджер, чтобы перейти на
конкретная страница (скажем, 5)
- Нажатие на ссылку для перехода на другую страницу
- Нажмите кнопку «Назад» в своем браузере, чтобы вернуться на страницу с GridView
- Сетка теперь возвращается к
исходное состояние (на странице 1), так как
браузер не отслеживал это, и поэтому
пользователь нажимает, чтобы снова перейти на страницу 5,
что приводит к ошибке
Кто-нибудь знает, что вызвало бы это? Это только кажется проблемой при нажатии на ту же страницу. Если при повторном посещении нажата другая страница, это нормально. Если столбец отсортирован, то при повторном посещении отсортирован снова, это тоже хорошо. Я не уверен, что именно из-за двойного нажатия на страницу вызывает проблему.
Вот код для пейджера:
protected void gvResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvResults.DataSource = SearchResults;
gvResults.PageIndex = e.NewPageIndex;
gvResults.DataBind();
}
, где gvResults - это GridView, а 'SearchResults' - это список, хранящийся в состоянии просмотра.
редактировать
Похоже, что хотя отображение сетки не отображает страницу 5, когда пользователь возвращается на страницу (возвращается к странице 1), по какой-то причине браузер действительно сохранил состояние просмотра и имеет отображение сетки на странице 5. Так что, если Я щелкаю на странице 4 и просматриваю код для события подкачки. Я вижу, что он считает, что страница, на которой он находился, была 5 ... хотя отображаемый контент был для страницы 1.
Мораль истории, по-видимому, заключается в том, что состояние просмотра сохраняется, когда пользователь нажимает кнопку «Назад», чтобы вернуться на страницу, но отображаемая таблица не отображается.