2010-11-09 66 views
0

我在數據庫中有40條記錄,但我通過使用網格面板在商店網格的每個頁面中顯示10條記錄。如何在刷新asp.net中的網頁後獲取當前頁面?

同樣,我使用Ajax進行事件。問題是當我刷新頁面或網格時,它顯示第一頁中的第一條記錄。刷新數據時如何獲取當前頁面數據?

我該如何避免這個問題,任何人都可以幫助我?

回答

0

你需要在你的後端一個會話保留當前的指數(當你做你的Ajax請求更新),當您重新從該索引的頁面開始。

+0

我已經完成了。但它沒有綁定到特定的頁面。這是代碼:protected void Refresh_Click(object sender,StoreRefreshDataEventArgs e) { Refresh(); pgtCombo.PageIndex =(int)Session [「pgIndex」]; pgtCombo.PageSize =(int)Session [「pgSize」]; Session [「pgIndex」] = string.Empty; Session [「pgSize」] = string.Empty; } – user520946 2010-11-10 07:27:49

+0

您在服務器端使用哪種語言?您也應該重新標記您的問題以包含該問題,因爲您現在試圖解決的問題與此相關。 – Knubo 2010-11-10 14:33:54

0

如果您重新加載頁面(例如使用F5鍵),則服務器會收到一個全新的請求,並且前一個請求的上下文丟失,因此網格視圖會再次呈現其第一個頁面。

但是,如果您只回發到服務器(例如通過單擊提交頁面的按鈕),並且爲網格視圖啓用ViewState,則應保留其當前頁面。

如果你絕對要保持整個頁面重新加載(而不是隻回發)當前頁面,你需要在一些地方仍然存在當前頁面的索引,例如在用戶的session state

Session["CurrentGridViewPage"] = yourGridView.PageIndex; 

,並恢復在頁面加載:

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

編輯:如果你需要堅持的頁面索引您網站上的多個頁面,您需要在會話密鑰一些令牌唯一標識頁面,例如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(object sender,StoreRefreshDataEventArgs e) { Refresh(); pgtCombo.PageIndex =(int)Session [「pgIndex」]; pgtCombo.PageSize =(int)Session [「pgSize」]; Session [「pgIndex」] = string.Empty; Session [「pgSize」] = string.Empty; } – user520946 2010-11-10 07:30:46

+0

@ user490030,你是對的。這是在我更新的答案中解決的。 – 2010-11-10 16:57:39