当前位置:  开发笔记 > 编程语言 > 正文

将相同类型的多个用户控件添加到页面

如何解决《将相同类型的多个用户控件添加到页面》经验,为你挑选了1个好方法。

有人提出了类似的问题,但似乎没有一个问题可以解决我的确切情况,这就是我要做的事情.

我有一个管理学生信息的用户控件.即FirstName,LastName,Address等.

我有一个网页/表单,上面有一个按钮."添加学生".我想要完成的是每次点击后将新的StudentInfo控件添加到webform.

我当前的代码看起来像这样

Private Sub btnAddStudent_Click(sender as object, ByVal e As System.EventArgs)
Dim lStudentInfo as Control

LoadControl("~/StudentInfo.ascx")

Me.placeholder1.controls.add(lStudentInfo)

End Sub

使用此代码,仅添加一个StudentInfo控件,再次按下"添加"按钮时,不会在第一个控件下方添加新的StudentInfo控件,并清除在第一个控件中输入的文本/数据.

在此先感谢您的任何帮助.



1> Joel Coehoor..:

发生的事情是,每次你做回发你以前的控制都会丢失.请记住,每个回发都使用页面类的全新实例.上次添加控件的实例在http请求完成后就被销毁 - 可能在浏览器完成加载它的DOM之前.

如果您希望每个回发都存在一个控件,则必须在每次回发时添加它.

此外,如果您希望ViewState适用于控件,则需要在页面的Load事件之前添加它.这意味着在Init或PreInit上.

Private Sub btnAddStudent_Click(sender as object, ByVal e As System.EventArgs)
    Me.placeholder1.controls.add(LoadControl("~/StudentInfo.ascx"))
    Session("NewStudentControls") += 1
End Sub

Protected Sub Page_Init(sender as object, e as system.eventargs)
     For i As Integer = 1 To Session("NewStudentControls")
          Me.placeholder1.controls.add(LoadControl("~/StudentInfo.ascx"))
     Next
End Sub   

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有