2013-02-24 22 views
1

我已經動態地添加了一個WebUserControl,然後我想要得到它,這裏是我的故事:(我不知道該怎麼做,這裏是我的代碼, 在此先感謝,獲取webuserControl的值自動創建

Protected Sub btngenerate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btngenerate.Click 

    For Each Str As String In Tstring 
     Dim addressControl As WebUC = CType(LoadControl("WebUC.ascx"), WebUC) 

     addressControl.plbl.Text = Str 
     form1.Controls.Add(addressControl) 
    Next 


End Sub 



Protected Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOk.Click 


'here is what i did , but it didn't work 
'For Each ct As WebUCIn form1.Controls 
' ltlres.Text = ltlres.Text & ", " & ct.plbl.Text & " " & ct.ptxt.Text 

'Next 

End Sub 

回答

0

還有就是添加控件動態。你必須將它們添加回Init只要你需要他們的規則。

只是增加他們點擊一個按鈕將顯示他們的第一次,但您不會收到任何輸入。

您可以在會話中保留一個標誌,表示它們必須添加到Init

+0

因此,form1.Controls.Add(addressControl)將在Init上,並且我必須對點擊事件做些什麼? – user1187282 2013-02-24 12:39:52

+0

您首次將它添加到點擊事件中。但是從那時起,只要發生回發,就在Init中再次添加它。 – nunespascal 2013-02-24 13:10:14

0

因爲您動態添加了該控件,所以當您回發時,您需要再次添加它以便ViewState和回發數據將與之相關聯。

Init事件中重新創建它,然後當您處理控制事件(如按鈕單擊)時,它將存在並將其數據(如其子控件的內容)與其關聯。

由於您將控件創建爲對另一個事件的響應,因此您需要在會話中保留某種標誌(布爾值?計數器?)以便知道是否重新創建它在Init

+0

好吧,這是否意味着click事件將僅顯示控件? – user1187282 2013-02-24 12:42:37

+0

'btngenerate_Click'將創建並添加控件,並且會在Session中放置某種標誌或計數器。然後,當你回發時,你會讀標誌/計數器並在'Init'中重新創建控制。然後,當執行'btnOK_Click'時,控件將在那裏供您訪問。 – 2013-02-24 13:24:18