2016-09-14 23 views
0

我正在asp.net/vb.net中的大多數div動態創建的頁面上工作。此外,我希望用戶使用動態插入的HtmlTextAreas,文本框等編輯內容。在div中找到動態創建的控件(TextBox)

我已經設法創建了所有這些東西。我將每個div插入到面板中,當用戶單擊編輯按鈕後,div將重新加載並填充項目(例如TextBoxes)。爲了保存,我循環遍歷每個div並嘗試找到該項目。我現在唯一的問題是,我無法找到動態插入的項目。

For Each control As HtmlGenericControl In panel.Controls 
'do something like this: 
'Dim textBox As New TextBox = control.FindControl("myTextBox") 
Next 

我已經嘗試了一些選擇,但可惜沒有成功(文本框始終爲Nothing)

我使用Masterpages,所以我想這:

Dim MainContent As ContentPlaceHolder = TryCast(Page.Master.FindControl("ContentPlaceHolder"), ContentPlaceHolder) 
Dim textBox As TextBox = DirectCast("myTextBox" & intCount.ToString(), TextBox) 

有什麼如何做到這一點?

感謝您的時間和精力! :)

回答

0

你需要小心你的鑄造。當你有一個控制對象的集合時,你不能將它們全部轉換到一個文本框(即一個標籤不能被轉換並且會拋出異常)。

您可以用找到的控制:

Dim textbox as TextBox = CType(control.FindControl("myTextBox"), TextBox) 

要遍歷所有的文本框,你可以使用:

For Each textbox As TextBox In panel.Controls.OfType(of TextBox) 
    ... interact here 
Next 

在這一行

Dim textBox As TextBox = DirectCast("myTextBox" & intCount.ToString(), TextBox) 

你正試圖轉換字符串到一個文本框不會工作。您需要使用FindControl來檢索它。

+0

謝謝你的回答。在再次搜索之後,我意識到,我沒有正確回顧這些元素,因此控件將無法加載。你的代碼現在工作正常。 –