開發中我們經常會遇到有一個主頁以列表方式分頁顯示數據,並提供多種查詢條件,可對查詢結果記錄進行修改、刪除等操作,在操作頁面執行完畢後需返回查詢頁面,這時常常會遺失查詢條件和目前所在頁,我們可透過頁面狀態儲存來解決查詢頁條件和分頁資訊遺失的問題。
我們通常會重寫Page類別中的protected override object LoadPageStateFromPersistenceMedium(),
protected override void SavePageStateToPersistenceMedium(object state),
protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument),
protected override System.Collections.Specialized.NameValueCollection DeterminePostBackMode(),四個方法來解決。但大家一般會在RaisePostBackEvent重寫中判斷恢復頁面時,不執行裡面的base.RaisePostBackEvent(sourceControl, eventArgument);以禁止事件重新執行的情況,但往往卻帶了意想不到的情況,如修改結果沒有刷新、刪除記錄沒有刷新。雖然這樣做效能提高了,但資料刷新卻無法解決,要想避免這個問題,辦法很簡單,就是不要重寫RaisePostBackEvent,讓查詢頁面在恢復狀態時重新執行上次回發事件,這樣結果刷新了,頁面條件值和目前頁索引都保留了下來,是不是非常完美啊!