2011-10-07 2 views
0

AutoPostBack = True
내 asp.net 페이지에 두 개의 라디오 단추가 있어요 그 중 하나를 클릭하면 각 xxxx SaveData=FalseSaveData=False asp.net에서, 라디오 버튼 OnCheckedChanged 이벤트 전에 page_load가 발생했습니다.

그러나 설정할 때 그들을 클릭하면 page_load 이벤트가 먼저 발생하므로 page_load 이벤트가 데이터를 저장하면 radiobutton_OnCheckedChanged 이벤트가 트리거됩니다.

page_load 이벤트 전에 OnCheckedChanged을 어떻게 트리거 할 수 있습니까?

+0

구현이 불가능합니다. 그러나 플래그 설정을 위해 viewstate 또는 session을 사용하여 onCheckedChanged 이벤트의 값을 설정하고 원하는 위치에서 사용할 수 있습니다. –

답변

1

정상적인 페이지 수명주기이기 때문에 radiobutton_OnCheckedChanged 전에 OnCheckedChanged을 트리거 할 수 없습니다.

Page.IsPostBack이 true 인 경우 Page_Load를 체크인 한 다음 데이터를 저장 (저장)하지 않아도됩니다.

+0

음, 데이터를 저장해야하는 버튼이 있으므로 ispostback 이론이 작동하지 않을 수도 있습니다. – Troy

+1

@ 트로이, 그것은 작동합니다; 이것이 최선의 방법인지 여부는 별도의 논의입니다. 결론은 ASP.NET이 WinForms가 아니라는 것입니다. Page_Load 이벤트는 라디오 버튼의 OnCheckChanged 전에 항상 실행됩니다. IsPostBack을 검사하고 radioButton.Checked == true인지 여부를 확인하여 데이터 저장을 방지 할 수 있습니다. – Icarus

0

이벤트가 시작되기 전에 항상 페이지를로드 할 필요가 없습니다.

당신이 당신의 Page_Load에하고 싶은 것은이 컨트롤 생성, 뷰 상태 관리, 제어 상태 등과 관련이있다입니다 같은 : 당신이이 발생하지 않으

if(!this.IsPostBack) 
{ 
    // Do the stuff you want on the initial page load 
} 

아무것도 라디오 버튼을 클릭하면 if {} 블록 안에 넣습니다. IsPostBack은 페이지에서 포스트 백 이벤트를 처리하고 있음을 나타내며, 이는 라디오 버튼 중 하나를 클릭 할 때 발생합니다.

1

트로이 - 당신은 클라이언트 측 (자바 스크립트/jquery)에서 이것을 처리해야합니다. AutoPostBack = True로 설정하면 페이지로드를 호출하는 포스트 백이 수행됩니다. 페이지 수명주기 및 서버 측 이벤트 작동 방법에 관한 모든 것.

0

can't change 이벤트 핸들러 실행 order/sequence 그러나 page_load 내부의 코드를 다른 event handler으로 옮길 수도 있습니다.