我在數據庫中有40條記錄,但我通過使用網格面板在商店網格的每個頁面中顯示10條記錄。如何在刷新asp.net中的網頁後獲取當前頁面?
同樣,我使用Ajax進行事件。問題是當我刷新頁面或網格時,它顯示第一頁中的第一條記錄。刷新數據時如何獲取當前頁面數據?
我該如何避免這個問題,任何人都可以幫助我?
我在數據庫中有40條記錄,但我通過使用網格面板在商店網格的每個頁面中顯示10條記錄。如何在刷新asp.net中的網頁後獲取當前頁面?
同樣,我使用Ajax進行事件。問題是當我刷新頁面或網格時,它顯示第一頁中的第一條記錄。刷新數據時如何獲取當前頁面數據?
我該如何避免這個問題,任何人都可以幫助我?
你需要在你的後端一個會話保留當前的指數(當你做你的Ajax請求更新),當您重新從該索引的頁面開始。
如果您重新加載頁面(例如使用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];
}
我已經完成了。但它沒有綁定到特定的頁面。這是代碼: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
@ user490030,你是對的。這是在我更新的答案中解決的。 – 2010-11-10 16:57:39
我已經完成了。但它沒有綁定到特定的頁面。這是代碼: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
您在服務器端使用哪種語言?您也應該重新標記您的問題以包含該問題,因爲您現在試圖解決的問題與此相關。 – Knubo 2010-11-10 14:33:54