1

AutoPostBack = true의 DropDownList가있는 사용자 정의 컨트롤이 있고이 컨트롤을 표시 할 aspx 페이지도 있습니다. 나는 다시 만들 페이지하는 OnInit 메서드에서 사용자 정의 컨트롤을UserControl DropDownList가 해당 선택을 잃습니다.

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 
    var list = (List<Control>)Session[Controls]; 
    if (list != null) 
    { 
     foreach (var control in list) 
     { 
      var uc = (Control)LoadControl(ControlPath); 
      uc.SetDropDownState(control.state); 
      PlaceHolderQuestion.Controls.Add(uc); 
     } 
    } 
} 

그래서 드롭 다운 선택을 복원하고 다시 작성하는 동안, 그것은 처음 작동하지만, 내가 다시 선택을 변경할 때, OnSelectedIndexChanged 이벤트가 발생하지 않습니다 OnInit에서 DropDown 선택을 먼저 복원하고 OnSelectedIndexChanged 이벤트가 없기 때문에 아무 것도 변경되지 않았으므로 확실합니다. 몇 가지 해결 방법을 제안 할 수 있습니까?

UPDATE

VAR의 UC = (대조군) LoadControl (된 ControlPath); 은 사용자 컨트롤 이벤트를 유지해야합니다.

답변

0

심층 연구 끝에 SelectedIndexChanged 이벤트 로직에 문제가 있음을 알게되었습니다. 나는 모습을 핸들러 내부 Indirect Subscription Approach

원래 내가 다시로드 된 컨트롤을하시기 바랍니다 더 많은 정보를 원하시면, 내 페이지 로직 내에서 그것을 처리하기 위해 "간접 구독"접근 방식을 사용하고 있지만 내가 그것을하고있는 중이 이후이 필요하지 않은 Page_Load 메서드도 포함되어 있으므로 PlaceHolder 컨트롤 목록 내에서 컨트롤을 업데이트해야합니다. 분명하지 않다면 물어보십시오, 그리고 더 많은 설명을 제공 할 것입니다.

관련 문제