2013-08-20 2 views
0

desktopArea div에로드 된 페이지의 특정 영역 (예 : appArea)에 다른 항목과 별도로 DataGrid 및 드롭 다운이있는 페이지가 있습니다.LoadBackState가 PostBack 이벤트에서 호출되지 않음

잘 작동하는 SelectedIndexChanged가 처리 될 때 드롭 다운이 DataGrid를 다시로드해야합니다.

일부 크기 조정 임계 값에 도달하면 아래 applet을 사용하여이 appArea를 다른 위치로 이동합니다 (예 : mobileArea div에서 이벤트 바인딩 등으로 동일한 영역을 표시해야 함). 내가 드롭 다운 값을 변경하는 경우

   var wrapper = document.createElement('div'); 
       $(wrapper).append($appArea.detach()); 
       $(wrapper).find('script').remove(); 
       $("wikiAppArea").parent().empty().append($(wrapper).children().contents()); 

은 mobileArea의 사업부로이 appArea 이동시의의 SelectedIndexChanged 다시 게시 이벤트가 호출되고 데이터 그리드는 바인더 제본되어 있지만 데이터 그리드가 손실됩니다.

페이지에서 추적을 수행하면 드롭 다운 클릭시 DataGrid가 손실되는 경우 DataGrid가 LoadViewState 메서드를 전혀 호출하지 않는다는 사실을 알 수 있습니다 (SaveViewState 및 TrackViewState 호출 중임).

초기 조사에서 컨트롤 계층 구조가 변경되어 다시 게시하는 동안 DataGrid에 대한 LoadViewState가 호출되지 않는다는 문제가 발생했습니다.

이 경우 LoadViewState를 강제로 호출하는 방법이 있습니까?

+0

DataGrid가 SaveViewState 및 LoadViewState 메소드를 대체합니다. TrackViewState가 DataGrid에서 재정의되지 않았습니다. – ssingh3

답변

1

ViewStateModeById 속성을 적용하면이 문제가 해결되었습니다.

ViewStateModeByIdAttribute 클래스는 ID 별 뷰 상태로드가 필요한 컨트롤을 지정하는 데 사용됩니다. 기본 뷰 상태로드 동작은 ASP.NET에서 컨트롤의 뷰 상태 정보를 페이지의 컨트롤 트리에있는 인덱스로로드하는 것입니다. 뷰 상태 정보를로드하기 전에 페이지 컨트롤 트리에서 컨트롤을 구체적으로 검색해야하기 때문에 뷰 상태 정보를 ID별로로드하는 데 필요한 성능 비용이 있습니다.

ViewStateModeByIdAttribute 클래스는 컨트롤의 뷰 상태 정보 저장에 적용되지 않습니다. ViewStateModeByIdAttribute 클래스 메타 데이터 속성은 클래스 선언에서만 유효합니다.