2011-09-20 86 views
1

我需要從頁面後面的代碼創建一個FileUpload控件。我有這樣的功能:從代碼後面創建FileUpload

Private Function CreateUpload() As FileUpload 

Dim txtFileUpload As New FileUpload 
txtFileUpload.ID = "element1" 
Return txtFileUpload 

End Function 

然而,即使我成功地使用其他表單控件類似的技術,我FormUpload不會被渲染頁面。

有人可以請解釋我做錯了什麼。

編輯:我正在寫返回的FileUpload到我的函數以外的頁面上的DIV。

更新:它被分類。似乎是Visual Studio的一個問題。關閉它,重新啓動然後重建網站將其排序。感謝所有迴應的人。

謝謝。

+0

我們需要更多的細節。首先,這段代碼只聲明一個新的FileUpload控件,但從不將其添加到頁面中。其次,我們不知道這個代碼被調用的地方。在Page生命週期中向頁面動態添加控件可能已經太晚了。 –

+0

我正在將控件寫入該函數之外的頁面。我用與我所有其他表單元素控件完全相同的方式調用它,並且它們工作正常,所以與頁生命週期無關。 – chut319

回答

1

我看不到您將此控件添加到WebForm。嘗試添加它:

Private Function CreateUpload() As FileUpload 

    Dim txtFileUpload As New FileUpload 
    txtFileUpload.ID = "element1" 
    Page.Controls.Add(txtFileUpload) 
    Return txtFileUpload 

End Function 

,或者如果你沒有進入這個函數內部的頁面添加它,當你調用的代碼的功能時,您的網頁表單的背後:

Dim txtFileUpload As FileUpload = CreateUpload() 
Page.Controls.Add(txtFileUpload) 
+0

謝謝,達林,但我在功能外添加了控件。我使用幾乎完全相同的技術來添加其他控件,如文本框等,所以我知道事物的一面是排序的。我想知道是否需要將FileUpload「綁定」到文本框或類似的地方? – chut319

+0

@ chut319,不,你不必把它綁在任何東西上。將它添加到頁面的Controls集合應該足夠了。只要確保你在[頁面生命週期](http://msdn.microsoft.com/en-us/library/ms178472.aspx)這是'PreInit'事件的正確時間就這樣做了。 –

+0

我關閉了Visual Studio,重新打開它,重建網站和繁榮,它就在那裏。沒有任何代碼改變。非常令人沮喪!無論如何,感謝您的幫助,@達琳。 – chut319