2010-11-09 4 views
0

У меня есть 40 записей в базе данных, но я показываю 10 записей на каждой странице в сетке хранилища, используя панель сетки.Как получить текущую страницу после обновления веб-страницы в asp.net?

Аналогичным образом, я использую Ajax для событий. Проблема в том, что когда я обновляю страницу или сетку, она показывает первую запись на первой странице. Как получить текущие данные страницы при обновлении данных?

Как я могу избежать этой проблемы, может кто-нибудь мне помочь?

ответ

0

Вам необходимо иметь сеанс в своем back-end, который запоминает текущий индекс (обновляется при выполнении ваших запросов ajax) и при перезагрузке начала страницы из этого индекса.

+0

Я сделал это. Но он не привязан к конкретной странице. Это код: protected void Refresh_Click (отправитель объекта, StoreRefreshDataEventArgs e) { Обновить(); pgtCombo.PageIndex = (int) Session ["pgIndex"]; pgtCombo.PageSize = (int) Session ["pgSize"]; Сессия ["pgIndex"] = string.Empty; Сессия ["pgSize"] = string.Empty; } – user520946

+0

На каком языке вы используете сервер? Вероятно, вы также должны повторно пометить свой вопрос, чтобы включить это, так как проблема, которую вы сейчас пытаетесь решить, связана с этим. – Knubo

0

Если вы перезагрузите страницу (например, с помощью клавиши F5), сервер получит новый запрос, и контекст предыдущего запроса будет потерян, поэтому вид сетки снова отобразит первую страницу.

Однако, если вы только отправляете сообщение на сервер (например, нажав кнопку, которая отправляет страницу), и ViewState включен для представления сетки, он должен сохранить свою текущую страницу.

Если вы абсолютно хотите сохранить текущую страницу на странице перезагрузки (а не только на обратной стороне), вам необходимо сохранить текущий индекс страницы где-нибудь, например. в пользователя session state:

Session["CurrentGridViewPage"] = yourGridView.PageIndex; 

И восстановить, что на странице загрузки:

if (Session["CurrentGridViewPage"] != null) { 
    yourGridView.PageIndex = (int) Session["CurrentGridViewPage"]; 
} 

EDIT: Если вам нужно упорствовать индекс страниц для нескольких страниц на вашем сайте, вам необходимо включить в ключ сеанса - некоторый токен, однозначно идентифицирующий страницу, например Request.AppRelativeCurrentExecutionFilePath:

protected string PageIndexSessionKey 
{ 
    get { 
     return Request.AppRelativeCurrentExecutionFilePath + "$pgIndex"; 
    } 
} 

// Save. 
Session[PageIndexSessionKey] = yourGridView.PageIndex; 

// Restore. 
if (Session[PageIndexSessionKey] != null) { 
    yourGridView.PageIndex = (int) Session[PageIndexSessionKey]; 
} 
+0

Я сделал это. Но он не привязан к конкретной странице. Это код: protected void Refresh_Click (отправитель объекта, StoreRefreshDataEventArgs e) { Обновить(); pgtCombo.PageIndex = (int) Session ["pgIndex"]; pgtCombo.PageSize = (int) Session ["pgSize"]; Сессия ["pgIndex"] = string.Empty; Сессия ["pgSize"] = string.Empty; } – user520946

+0

@ user490030, вы правы. Это исправлено в моем обновленном ответе. –

Смежные вопросы