2012-03-01 160 views
0

我想要做的是動態創建一堆下拉列表,然後我想遍歷它們並使用這些值更新數據庫,但是我面臨的問題是我創建了下拉列表列表,但當我回到循環中時,他們不再在面板中。我不知道爲什麼,但是當我正在調試時,我在pnlTeacherSelect中計數了50個控件,直到我按下了調用prcChoose的按鈕。通過動態創建控件循環

調用頁面加載

Sub prcSetTeachers() 
    For Each Subject In ds.Tables("Subject").Rows 
     Dim Temp As New DropDownList 
     pnlTeacherSelect.Controls.Add(Temp) 
     Temp.ID = "drp" & Subject.Item(0) & "s" & Child.Item(0) 
    Next 
End Sub 

叫上點擊一個按鈕

Sub prcChoose() 
    For Each DropDownList In pnlTeacherSelect.Controls.OfType(Of DropDownList) 

    'This is never executed 

    Next 
End Sub 

任何想法是什麼引起的呢?提前致謝!

回答

2

您必須在每次回發時重新創建所有動態創建的控件(最遲在加載事件中)。 您還必須確保它們獲得與以前相同的ID以觸發事件並保持ViewState。

如果您知道要創建的控件的數量(可以存儲在ViewState中),您可以通過將計數器變量附加到控件ID來派生ID。然後,您可以使用頁面的init事件中的正確標識重新創建它們。

Recommandable讀數:

或者你可以使用內建的像Repeater自動做到這一點的一個。您只需設置DataSource並致電DataBind()。

這裏是我的答案上實現類似的問題:

+0

謝謝!這很好地解釋了它。我寧願它沒有;這將意味着相當多的擺弄,但是哦。再次感謝! – 2012-03-01 11:23:48