2011-01-07 2 views
0

UserControl의 인스턴스를 생성하고 UL에 넣습니다. 내 UserControl에는 이벤트가있는 버튼이 있습니다. 내가 어떻게 생성 된 UserControls의 상태를 유지할 수 있는지 물어보고 싶습니다. 그래서 포스트 백 이후에도 페이지에 남아 있고 이벤트를 잡을 수 있습니다.ASP.NET에서 여러 사용자 컨트롤의 상태 유지

For i As Integer = 0 To lstFoo.Count - 1  
    Dim liFoo As New HtmlGenericControl("li") 
    Dim ucMyFoo As ucFoo = LoadControl("userControls/ucFoo.ascx") 

    liFoo.Controls.Add(ucMyFoo) 
    ucMyFoo.DoSomething() 
    ulFoo.Controls.Add(liFoo) 
Next 
+2

ucMyFoo에 ID를 지정하지 않았습니다. 포스트 백 이후 다른 내용 (예 : lstFoo의 항목 수)이 생성되어 다른 컨트롤 집합이 생성되는 경우 문제가 될 수 있습니다. –

+0

흠 ID가 트릭을했고, 답변을 게시하고 나는 그것을 당신에게 표시 할 것입니다. – Drahcir

답변

1

위의 로직을 실행하지 않은 것 같습니다. GET 요청에서 위의 코드 만 실행하고 있습니까? GET 또는 POST에 상관없이 Page_Load에서 실행되는지 확인할 수 있습니다.

당신이 할 수있는 또 다른 방법은 ucFoo.ascx 컨트롤을 추가하는 로직을 가진 UL 웹 사용자 컨트롤을 작성하는 것입니다. 그런 다음이 UL 웹 사용자 컨트롤 (ascx)을 웹 폼에 포함하십시오.

이렇게하면이 새로운 웹 사용자 정의 컨트롤이 항상 페이지에 있고 컨트롤을 동적으로 추가하지 않기 때문에 편리합니다.

+0

포스트 백에 코드를 삽입하면 userControl이 간단하게 재생성되어 이벤트를 잃을 수 있습니다. – Drahcir

+0

다른 usercontrol에리스트를 넣으려고했습니다 .... 나는 여전히 포스트 백에서 usercontrols 목록을 잃어버린다. – Drahcir

+0

이벤트 핸들러를 다시 추가해야한다. 그런 다음 예상대로 작동해야합니다. 일반적으로 aspx 태그에 물건을 추가하는 것이 좋을 수 있으므로 이러한 두통을 피할 수 있습니다. – Greg