2014-10-17 2 views
0

버튼 이벤트 (Page_Load가 아닌)에 의해 동적으로 트리거 된 버튼을 만들었지 만 추가 된 컨트롤은 자동으로 제거되었습니다.동적으로 추가 된 컨트롤은 항상 제거/삭제됩니다.

Protected Sub btnDate_Click(s As Object, e As EventArgs) 
    Label1.Text = CType(s,Button).Text & " has been clicked." 
End Sub 

Protected Sub btnDiagDateOK_Click(s As Object, e As EventArgs) Handles btnDiagDateOK.Click 

    Dim b As New Button 
    Dim dates() As String = TextBox1.Text.Split("|") ' Ex: 10OCT2014|11OCT2014|12OCT2014 

    For Each s As String in dates 
     b = New Button 
     b.Text = s 
     AddHandler b.Click, AddressOf btnDate_Click 

     Panel1.Controls.Add(b) 
    Next 

End Sub 

문제는 내가 다른 버튼 (또는 생성 된 버튼)을 클릭 할 때마다이에 Panel1 내부의 모든 컨트롤이 제거됩니다.

내가 만든 컨트롤이 사용자 정의 자바 스크립트를 사용하지 않고 제거되지 않는 방법이 있습니까?

+1

각 포스트 백마다 컨트롤을 다시 만들어야하며 매번 똑같은 ID를 가져야합니다. 포스트 백에 대한 컨트롤을 만들 때 포스트 백 이벤트를 수신 할 수 있도록 적절하게 만들어 지도록 OnLoad 이벤트 전에 새 컨트롤이 존재하는 것이 가장 좋습니다. 그렇지 않으면 다시 게시가 발생하며 데이터를 수신 할 시간 내에 존재하지 않습니다. –

답변

2

이것은 "사용자 정의 javascript"와는 아무런 관련이 없습니다.

페이지가 서버에서 인스턴스화 될 때마다 페이지 컨트롤은 페이지의 aspx 파일에서 마크 업을 기반으로 만들어집니다. 페이지 메소드 중 하나에 코드가 없으면 페이지는 이전 윤회에서 동적으로 생성 된 추가 컨트롤을 알지 못합니다. 이러한 컨트롤에 대한 정보 (예 : 페이지의 ViewState)를 저장하고 늦어도 Page_Load에 다시 만들어야합니다.

+0

이것은 Session과 비슷하지만 동적으로 사용하기 때문에 약간 복잡합니다. 개체는 여전히 남아 있지만 개체의 속성을 변경하는 다른 이벤트가 있습니다. 자체 이벤트를 클릭하여 트리거합니다. 절대로 ViewState가 큰 도움이 될 것이라고 생각하지 않았습니다 :) – pvzkch

관련 문제