Asp.net 以编程方式将动态AJAX控件添加到ASP页面

Asp.net 以编程方式将动态AJAX控件添加到ASP页面,asp.net,ajax,vb.net,Asp.net,Ajax,Vb.net,是否可以通过编程方式将动态AJAX控件添加到ASP页面 现在我在Page_Init事件中动态创建Textbox和Listbox。我有一个只附加到第一个列表框的悬停菜单 我需要将它添加到创建其他控件的循环中,以便它在每个列表框中都可用 这是我的一些代码 Dim num As Integer = Session("lineNums") ' Determines how many text boxes need to be created based on carriage returns f

是否可以通过编程方式将动态AJAX控件添加到ASP页面

现在我在Page_Init事件中动态创建Textbox和Listbox。我有一个只附加到第一个列表框的悬停菜单

我需要将它添加到创建其他控件的循环中,以便它在每个列表框中都可用

这是我的一些代码

Dim num As Integer = Session("lineNums")     ' Determines how many text boxes need to be created based on carriage returns from textblock. 

Dim MainContent As ContentPlaceHolder = CType(Page.Master.FindControl("ContentPlaceHolder1"), ContentPlaceHolder) 

Dim ph As PlaceHolder = DirectCast(MainContent.FindControl("PlaceHolder1"), PlaceHolder) 

For I = 1 To num 

   Dim txtD As New TextBox 
   txtD.ID = "txtDEdit" & I.ToString("D2") 
   ph.Controls.Add(txtD) 

   Dim litCtrlD As New Literal 
   litCtrlD.ID = "litCtrlD" & I.ToString("D2") 
   litCtrlD.Text = "<br />" 
   ph.Controls.Add(litCtrlD) 

   txtD.Text = "ENGLISH" 

   Dim txtA As New TextBox 
   txtA.ID = "txtAEdit" & I.ToString("D2") 
   ph.Controls.Add(txtA) 

   Dim litCtrla As New Literal 
   litCtrla.ID = "litCtrla" & I.ToString("D2") 
   litCtrla.Text = "<br />" 
   ph.Controls.Add(litCtrla) 

   Dim txtE As New TextBox 
   txtE.ID = "txtEEdit" & I.ToString("D2") 
   ph.Controls.Add(txtE) 

   Dim litCtrlE As New Literal 
   litCtrlE.ID = "litCtrlE" & I.ToString("D2") 
   litCtrlE.Text = "<br />" 
   ph.Controls.Add(litCtrlE) 

   txtE.Text = "TRANSLATION" 

   Dim txtB As New TextBox 
   txtB.ID = "txtBEdit" & I.ToString("D2") 
   ph.Controls.Add(txtB) 

   AddHandler txtB.TextChanged, AddressOf txtBChanged 

   Dim litCtrl As New Literal 
   litCtrl.ID = "litCtrl" & I.ToString("D2") 
   ph.Controls.Add(litCtrl) 

   Dim lstF As New ListBox 
   lstF.ID = "lstFEdit" & I.ToString("D2") 
   ph.Controls.Add(lstF) 

   Dim litCtrlF As New Literal 
   litCtrlF.ID = "litCtrlF" & I.ToString("D2") 
   ph.Controls.Add(litCtrlF) 

   Dim lstG As New ListBox 
   lstG.ID = "lstGEdit" & I.ToString("D2") 
   ph.Controls.Add(lstG) 

   AddHandler lstG.SelectedIndexChanged, AddressOf lstGChanged 

   Dim litCtrlG As New Literal 
   litCtrlG.ID = "litCtrlG" & I.ToString("D2") 
   ph.Controls.Add(litCtrlG) 

Next I 
谢谢你在这方面的帮助

编辑:我已将以下代码添加到Page_Init事件中,以尝试构建悬停菜单,但收到如下所述的错误

' ************************************
' Creating Hover
  Dim hoverMenuExt As New AjaxControlToolkit.HoverMenuExtender
  hoverMenuExt.ID = "hovExtEdit" & I.ToString("D2")     **
  ph.Controls.Add(hoverMenuExt)

  Dim litHoverMenuExt As New Literal
  litHoverMenuExt.ID = "litHoverMenuExt" & I.ToString("D2")
  ph.Controls.Add(litHoverMenuExt)
**有错误的行:变量“hoverMenuExt.ID”在赋值之前使用。运行时可能会导致空引用异常


这部分有什么想法吗?

仅供参考,这是一个很好的链接,展示了如何动态添加标准控件


这提供了对动态控件的深入审查,该动态控件过于复杂,无法在此详述。

Dim hoverMenuExt作为新的AjaxControlToolkit。HoverMenuExtender
' ************************************
' Creating Hover
  Dim hoverMenuExt As New AjaxControlToolkit.HoverMenuExtender
  hoverMenuExt.ID = "hovExtEdit" & I.ToString("D2")     **
  ph.Controls.Add(hoverMenuExt)

  Dim litHoverMenuExt As New Literal
  litHoverMenuExt.ID = "litHoverMenuExt" & I.ToString("D2")
  ph.Controls.Add(litHoverMenuExt)