개발 중에 데이터를 페이징 목록으로 표시하고 다양한 쿼리 조건을 제공하는 메인 페이지를 자주 접하게 됩니다. 쿼리 결과 레코드는 수정, 삭제 및 기타 작업이 가능하며 작업 페이지가 완료된 후 다시 돌아가야 합니다. 이때 쿼리 조건과 현재 페이지가 손실되는 경우가 많습니다. 페이지 상태를 저장하면 쿼리 페이지 조건과 페이징 정보가 손실되는 문제를 해결할 수 있습니다.
우리는 일반적으로 페이지 클래스에서 보호된 재정의 객체 LoadPageStateFromPersistenceMedium()을 재정의합니다.
보호된 재정의 void SavePageStateToPersistenceMedium(객체 상태),
보호된 재정의 void raisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument),
protected 재정의 System.Collections.Specialized.NameValueCollection DefinePostBackMode(), 해결 방법 네 가지. 하지만 일반적으로 사람들은 raisePostBackEvent 재작성에서 페이지를 복원할 때 해당 이벤트가 다시 실행되는 것을 방지하기 위해 base.RaisePostBackEvent(sourceControl, eventArgument); 를 실행하지 않는다고 판단하는데, 이로 인해 다음과 같은 예상치 못한 상황이 발생하는 경우가 많습니다. 수정 결과가 새로 고쳐지지 않아 삭제 기록이 새로 고쳐지지 않습니다. 이렇게 하면 성능이 향상되지만 데이터 새로 고침으로는 문제를 해결할 수 없습니다. 이 문제를 방지하는 방법은 매우 간단합니다. 즉, raisePostBackEvent를 다시 작성하지 않고 상태가 복원될 때 쿼리 페이지에서 마지막 포스트백 이벤트를 다시 실행하도록 하면 됩니다. 결과가 새로 고쳐지네요. 페이지 조건 값과 현재 페이지 인덱스가 모두 유지되는군요.