求助各位大神:.net如何动态添加用户自定义控件
用FileUpload, Button, Label, TextBox制作了一个用户自定义控件,用来上传文件和图片。
目标页面中手动添加该控件并测试,结果显示该控件功能一切正常。于是放了一个button按钮(btnMore),用于动态加载该控件。
程序中定义了一个ctrlID,对控件的数量进行计数,并以此为动态加载的控件ID附值。在debug模式下,可以看到随着btnMore的点击,ctrlID的值也在不断增加,但页面上就是不显示该控件。页面源文件中也找不到动态加载的控件。
同一段动态加载控件的代码,若是加载原生控件,如dropdownlist, textbox等,则完全OK。
贴出动态加载代码,大神们帮忙分析一下问题出在哪,谢谢!
前台
目标页面中手动添加该控件并测试,结果显示该控件功能一切正常。于是放了一个button按钮(btnMore),用于动态加载该控件。
程序中定义了一个ctrlID,对控件的数量进行计数,并以此为动态加载的控件ID附值。在debug模式下,可以看到随着btnMore的点击,ctrlID的值也在不断增加,但页面上就是不显示该控件。页面源文件中也找不到动态加载的控件。
同一段动态加载控件的代码,若是加载原生控件,如dropdownlist, textbox等,则完全OK。
贴出动态加载代码,大神们帮忙分析一下问题出在哪,谢谢!
前台
....
<myCtrl:PicUpload ID="fileUpload1" runat ="server" TargetFolder ="~/Docs/" FilePrefix ="doc" />
<br />
<asp:Button ID="btnMore" runat ="server" Text ="添加更多控件" />
<br />
<asp:Panel ID ="panelSpec" runat ="server" >
</asp:Panel>
....
Shared ctrlUploadList As New List(Of UserControl_PicUpload)
Shared ctrlID As Integer = 2 '目标页面中已经存在了一个同样的控件,ID为1,动态加载的控件ID从2开始
Protected Sub btnMore_Click(sender As Object, e As System.EventArgs) Handles btnMore.Click
'PicUpload为控件名称,放在UserControl文件夹内
Dim newFileUpload = New UserControl_PicUpload() With { _
.ID = "fileUpload" & ctrlID.ToString, _
.FilePrefix = "doc", _
.TargetFolder = "~/Docs/"}
'panelSpec是一个panel控件的ID,用来存放动态加载的控件
panelSpec.Controls.Add(newFileUpload)
ctrlUploadList.Add(newFileUpload)
ctrlID += 1
End Sub
'通过RestoreControls避免丢掉之前动态加载的控件
Protected Sub RestoreControls()
Dim myfileUpload As UserControl_PicUpload
For Each myfileUpload In ctrlUploadList
If myfileUpload IsNot Nothing Then
panelSpec.Controls.Add(myfileUpload)
End If
Next
End Sub
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
... '页面加载时对其他控件进行初始化
End If
RestoreControls()
End Sub
...全文
相关推荐
C#在panel动态添加控件
在 .net C#,在panel上动态增加控件示例子,简单,一看就会.
动态添加自定义控件至Panel
实现功能: 动态添加自定义控件至Panel,每行添加个数可控,达到指定个数后自动进行换行; 其中包含只能输入字母或者数字以及退格键(Backspace)的自定义控件
asp.net 动态添加多个用户控件
动态添加多个相同用户控件,并使每个用户控件获取不同的内容。
ASP.NET动态添加用户控件的方法
主要介绍了ASP.NET动态添加用户控件的方法,涉及asp.net用户控件的动态创建与使用技巧,需要的朋友可以参考下
实例化一个用户控件,动态添加一个用户控件
实例化一个用户控件,动态添加一个用户控件


