开发中我们经常会遇到有一个主页面以列表方式分页显示数据,并提供多种查询条件,可对查询结果记录进行修改、删除等操作,在操作页面执行完毕后需返回查询页面,这时常常会丢失查询条件和当前所在页,我们可通过页面状态保存来解决查询页条件和分页信息丢失的问题。
我们通常重写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,让查询页面在恢复状态时重新执行上次回发事件,这样结果刷新了,页面条件值和当前页索引都保留了下来,是不是非常完美啊!