문제

Framework 2.0을 사용하고 있으며 Postback을 수행 한 후 DataGrid와 DataSets가 어떻게 작동하는지 이해하지 못합니다. MSDN에서 요청이 포스트 백인 경우 다시 데이터 핀을 수행 할 필요가 없다고 말합니다. 그러나 내 질문은 DataGrid가 DataBind가 없으면 레코드를 다시 표시하는 방법입니다. ASP.NET이 캐시에 쿼리 결과를 저장하는 것을 탁월하지만 확실하지 않습니다. .NET이이를 달성하기 위해 사용하는 메커니즘이 무엇인지 알려주세요.

큰 쿼리 결과 (수백), 각 50 개의 레코드를 페이지에 빠뜨 렸으며 사용자가 다음 50 개의 레코드를 선택할 때마다 동일한 쿼리를 피하고 싶습니다.

미리 감사드립니다.

도움이 되었습니까?

해결책

ASP.NET은 이전 값을 ViewState에 저장하므로 Postbacks 사이에서 손실되지 않습니다.

그러나 귀하의 경우에는 Pagination, New Records에 대해 이야기하고 있습니다. 첫 번째 요청에서 검색하는 경우 ViewState에 저장할 수 있지만 좋은 생각은 아닙니다. 레코드가 많으면 페이지가 매우 느리게 제공됩니다.

클라이언트가 매번 동일한 데이터를 얻고 현재 데이터 변경이 중요하지 않은 경우 데이터를 표시 할 수 있습니다. ASP.NET의 캐싱 메커니즘.

다른 팁

이것에 대한 대답은 ViewState입니다. 전체 표시된 그리드는 ViewState에 저장되며 포스트 백에서 지속됩니다.

즉, 그리드는 초기 페이지로드에 정의되어 ViewState에 저장됩니다. 사용자가 링크/버튼을 클릭하여 포스트 백 양식을 작성하면 ViewState가 디코딩되고 다시 사용할 수 있습니다. 따라서 그리드를 리딩 할 필요가 없습니다. 그러나 알아야 할 경고가 몇 가지 있다고 말했다.

viewstate 마법의 단어입니다 : p

ASP.NET WebForms는 전부입니다 viewstate.

이 개념은 기본적으로 ASP.NET이 페이지에 숨겨진 입력 요소에 정보를 저장 한 다음 PostBacks를 사용하여 서버 쪽을 자동으로 검색하는 것입니다. 이는 전체 사이트를 서버에 다시 게시하는 양식 (전체 사이트 주변)을 게시합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top