2011-09-06 6 views
4

AJAX 업데이트 패널을 사용하여 드롭 다운 목록 선택에 포스트 백이있는 페이지가 있습니다. 드롭 다운 선택에 따라 페이지의 나머지 UI가 동적으로 생성됩니다. 동적 UI는 Submit 버튼 클릭에서 값을 가져 오기위한 페이지로드에서 가져옵니다. 내가 직면하고있는 문제는 드롭 다운 변경에서 원래 UI를 그리는 포스트 백과 변경된 UI를 그리는 포스트 우크가 발생하여 불일치가 발생한다는 것입니다. 이것을 처리하는 방법. 어떤 컨트롤이 포스트 백을 야기했는지 파악할 수있는 방법이 없으므로 선택 변경/제출 버튼 클릭으로 인해 포스트 백이 발생할 때 UI를 다시 그릴 수 있습니다.포스트 백을 야기한 컨트롤 확인

편집 : 중요한 질문을 놓치 셨습니다. 업데이트 패널의 트리거는 드롭 다운 목록의 SelectionChanged 이벤트입니다. 이로 인해 추가 포스트 백이 발생합니다.

답변

13

당신이 다음에 다시 게시를 확인 할 수 있습니다 ..

if (IsPostBack) 
{ 
    var targetID = Request.Form["__EVENTTARGET"]; 
} 

편집 : 당신은 .. 수행하여 실제 제어를 얻을 수 귀하의 컨트롤에 대한

if (targetID != null && targetID != string.Empty) 
{ 
    var targetControl = this.Page.FindControl(targetID); 
} 
1

를 사용하여 별도의 서버 이벤트 핸들러 수 있습니다. 즉, 당신이 그것을 두 번 다시 게시합니다 제출 버튼을 클릭하면, 그래서 드롭 다운이, 심지어 제출 버튼을 클릭하지 않고 다시 게시하는 원인이되므로 dropdownbox이의 AutoPostBack = "true"를 가지고

public void DropDown_Changed(Object sender, EventArgs e) 
{ 
    // Drop down is changed. It's the source of post back. 
} 

public void Button_Click(Object sender, EventArgs e) 
{ 
    // Button is the source of postback. 
} 
1

확인하는 경우 예를 들면 다음과 같습니다.

다시 게시를 일으킨 컨트롤을 찾는 방법 중 하나는 Request.Params.Get("__EVENTTARGET");

을 확인하는 것입니다.
관련 문제