2014-10-17 63 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的控件被除去。

有沒有一種方法,我創建的控件不會被刪除,而不使用用戶定義的JavaScript?

+1

您需要在每次回發時重新創建控件,並且每次都必須具有完全相同的ID。在回發上創建控件時,最好在OnLoad事件之前存在新控件,以便它們能夠及時正確創建以接收回發事件。否則回發發生,並且它們不存在及時接收任何數據。 – 2014-10-17 03:47:49

回答

2

這與「用戶定義的javascript」無關。

每次頁面在服務器上實例化時,都會根據頁面的aspx文件中的標記創建頁面控件。除非頁面方法之一存在代碼,否則頁面不會了解/記住其先前輪迴中動態創建的附加控件。您必須保存關於這些控件的信息(例如,在頁面的ViewState中),並最遲在Page_Load中再次創建它們。

+0

它與Session類似,但它有點複雜,因爲我將動態使用它。對象仍然保留,但我有另一個事件,將改變對象的屬性,通過點擊自己觸發。從來沒有想過ViewState會是一個很好的幫助:) – pvzkch 2014-10-17 06:10:35