2010-08-19 4 views
0

하나의 TemplateField가있는 격자가 있습니다.이 격자는 확인란이며 2 개의 바운드 필드를 말합니다.Asp.net postback oninit

포스트 백의 Page_Load에서 세션에 저장된 캐시 된 데이터 세트로 그리드를 리바 인딩합니다. 사용자가 그리드에서 체크 박스를 선택하면 포스트 백에서 그리드를 반복하고 그 값을 확인하면 모든 것이 잘됩니다.

포스트 백에서 격자 바인딩 코드를 Page_Load 대신 OnInit으로 이동하면 해당 확인란을 선택하는 사용자가 느슨해집니다. 왜? oninit 이후의 포스트 백 데이터가 그리드 상단에 오버레이되지 않아야합니까?

페이지를로드 할 때 격자가 다시 바인딩 될 때 체크 박스 열이 바인딩되지 않아 포스트 백 데이터를 덮어 쓰지 않기 때문에 포스트 백 데이터가있는 표에 데이터를 중첩한다고 가정합니다.

참고 : 내 표에서 viewstate가 비활성화되어 있으므로 모든 백 포스트 포스트 백에서 데이터 (세션에 저장된)를 바인딩합니다. 또한 뭔가 이상한, OnInit 사용할 때, 모든 포스트 백에 어떤 페이지 포스트 백 트리거 된 상관없이 표 첫 페이지를 가져옵니다. 감사합니다. .

답변

1

왜냐하면 viewstate가 OnInit 이벤트에 아직로드되지 않았기 때문입니다. asp.net 페이지 수명주기에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/ms178472.aspx을 확인하십시오. 희망이 도움이 !!

+0

의 ViewState 내 그리드에서 비활성화되어있는 링크입니다 내가 모든 게시에 세션에 저장된 데이터를 결합하는 이유를 이잖아. – user425232

+0

ASP.NET 라이프 사이클을 참조하는 데 사용되는 Upvote - 매우 유용한 페이지입니다. – mikemanne

0

LoadPostData와 비슷하게 ProcessPostData는 OnInit 이후이지만 Page_Load보다 먼저 발생합니다. 확인란 값이 포스트 데이터로 서버에 다시 전달된다고 가정합니다. 따라서 ViewState가 활성화 된 경우와 같은 문제가 의심됩니다. OnInit이 너무 일찍 나타납니다. 게시 된 데이터 (확인란 값)가 아직 컨트롤에 적용되지 않았습니다.

나는 viewstate-disabled 작동에 대한 광범위한 경험이 없으므로이 대답에 약간의 차이가없는 경우 사과드립니다.

+0

나는 당신과 동의한다, PostData는 OnInit을 위해 거기 있지 않으며 좋다. 나는 OnPageIndexChanging에 그리드를 반복하고 거기서 postdata를 기대하지만 얻을 수 없다. OnInit에서 그리드를 바운드했기 때문에 동작이 변경되었습니다. Page_Load와 OnInit의 바인딩 표 사이의 차이점을 이해하고 싶습니다. 내가 누락 된 것이있다. – user425232

+0

OnInit에서 눈금을 다시 바인딩하면 ProcessPostData가 올바른 데이터 요소를 확인란 값으로 덮어 쓸 수 없습니다. 하지만 그것은 내 입장에 대한 추측입니다. 나는 긍정적이지 않습니다. 죄송합니다 - 저는 viewstate-less 컨트롤에 대한 경험이 부족하여 매우 도움이 될 수 있다고 생각합니다. : - / – mikemanne