2011-09-20 62 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

相关问题