2012-01-24 2 views
1

현재 데이터베이스를 다시 쿼리하여 그리드를 채우지 만 상태가 복원되지만 페이지가 너무 느리게로드됩니다. 대신 세션 변수에 viewstate를 저장하고 사용자가 페이지를 다시 방문 할 때 복원하고 싶습니다. 어떻게 이뤄지나요? SessionPageStatePersister을 사용해야합니까? 이는 다시 게시 상황이 아니거나 교차 페이지 다시 게시가 아닙니다.세션 페이지 viewstate를 비 포스트 백, 크로스 페이지가 아닌 포스트 백 시나리오에서 저장하고 복원 할 수있는 방법은 무엇입니까?

배경 : 저는 VS 2010 ASP.Net 웹 응용 프로그램 템플릿을 마스터 페이지와 여러 개의 탭으로 구성된 콘텐츠 페이지와 함께 사용했습니다. 새 탭으로 이동하면 상태가 손실됩니다. 내 고객 탭을 사용하면 AspxGridView에서 한 고객을 필터링하고 선택할 수 있습니다. 선택한 고객 ID는 세션 변수에 저장되며 관련 고객 데이터를 연락처, 청구서, 작업 등 다른 탭에 표시하는 데 사용됩니다. SaveClientLayout을 사용하여 고객 그리드 필터, 정렬 및 레이아웃을 저장하고 복원 할 수 있습니다. 그러나 데이터베이스를 다시 쿼리하지 않고 그리드 데이터를 복원하는 방법을 모르겠습니다.

나는 this tutorial을 발견했으며 SessionPageStatePersister 섹션에 코드를 구현했습니다. 코드를 복사하고 SessionPageStateAdapter 및 .browser 파일을 만들었습니다. 이 세션 viewstate 데이터에 액세스하는 방법에 관해서는 혼란 스럽다. 사용자가 여러 다른 페이지를 방문한 후에 viewstate를 저장하고 복원하는 방법에 대한 도움이 필요합니까?

+0

로드가 얼마나 느려 집니까? 고객 그리드 쿼리의 속도를 높이거나 페이지를 올리는 더 나은 솔루션이 있습니까? 얼마나 많은 레코드를 반환합니까? – Paddy

+0

아쉽게도 데이터는 Connx ODBC 드라이버를 통해 액세스하는 Vax 플랫 파일에 있습니다. 최적화를 살펴 보 겠지만 Vax와 Connx는 익숙하지 않은 영역입니다. 필요한 경우 인덱스를 추가 할 수있는 SQL Server만큼 간단하지 않을 수 있습니다. – DeveloperDan

답변

0

Viewstate는 세션 상태를 관리하기위한 클라이언트 쪽 방법입니다.

HTML 렌더링 페이지 내에 코드를 삽입합니다.

사용자가 브라우저를 닫을 때 상태가 유지되지 않습니다.

  • 가 데이터베이스에 저장 계속 : 당신이 브라우저 세션에 걸쳐 상태를 저장하려면

    는 두 가지 방법이있다.
    성능 문제가있는 경우 ASP.NET 캐시 사용을 고려하십시오.

  • 정보를 쿠키에 저장하십시오.

+0

브라우저를 닫거나 브라우저 세션을 종료 한 후에 상태를 복원하려고 시도하지 않습니다. 동일한 세션 내에서 다른 페이지를 방문한 후에 viewstate를 복원하려고합니다. 문제는 viewstate가 일반적으로 포스트 백에만 사용된다는 것입니다. 내가 할 수없는 일을하려고합니까? – DeveloperDan

+0

나는 본다. 서버에서 뷰 상태 유지 (http://msdn.microsoft.com/en-us/magazine/cc188774.aspx#S6)를 살펴보십시오. –

+0

하지만 시나리오를 처리하는 가장 좋은 방법은 "현재 데이터베이스를 다시 쿼리하여 그리드를 채우지 만 페이지가 너무 느리게로드되어 상태를 복원합니다. 대신 세션 변수에 viewstate를 저장하고 사용자가 페이지를 다시 방문 "db + 캐시 또는 쿠키를 사용하고 있습니다. –