代码之家  ›  专栏  ›  技术社区  ›  Coda

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

  •  2
  • Coda  · 技术社区  · 17 年前

    我有一个管理学生信息的用户控件。i、 e.名、姓、地址等。

    我有一个网页/表格,上面有一个按钮。“添加学生”。我想要完成的是在每次单击后将一个新的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控件,再次按下“Add”(添加)按钮时,不会在第一个StudentInfo控件下方添加新的StudentInfo控件,并且会清除在第一个控件中输入的文本/数据。

    提前感谢您的帮助。

    1 回复  |  直到 17 年前
        1
  •  5
  •   Joel Coehoorn    17 年前

    现在发生的事情是,每次回发都会丢失以前的控制。请记住,每次回发都使用一个全新的page类实例。上次添加控件的实例为 摧毁 http请求一完成——可能在浏览器加载完DOM之前。

    每次回邮 .

    此外,如果希望ViewState为控件工作,则需要添加它 在页面的加载事件之前 . 这意味着要么在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   
    
    推荐文章