2012-01-26 27 views
0

我正在使用下面的代码在手风琴控件中创建动态窗格。从数据集中读取信息,并根据该信息生成控件。当我发现这些控件时,我现在陷入了困境。当用户点击一个按钮时,我需要遍历所有控件并获取文本框内的信息......但我真正需要知道的是如何调用这些补丁!查找动态控制(手风琴窗格)

 Do Until b = 0 
      holder = ds.Tables(0).Rows(i).Item("Issue" & z).ToString 
      If holder <> "" Then 
       lblTitle = New Label() 
       txtContent = New TextBox() 
       lblTitle.Text = "Issue" & z & " " & ds.Tables(0).Rows(i).Item("Issue" & z) 
       txtContent.Text = ds.Tables(0).Rows(i).Item("Issue" & z) 
       pn = New AjaxControlToolkit.AccordionPane() 
       pn.ID = "Pane" & z 
       pn.HeaderContainer.Controls.Add(lblTitle) 
       pn.ContentContainer.Controls.Add(txtContent) 
       arcPane.Panes.Add(pn) 

      End If 
      pncount = pncount + 1 
      z = z + 1 
      b = b - 1 
     Loop 

回答

-1

每个控件都有一个名为Controls的属性,它是一个直接子控件的集合。通过它们循环是可能的,在那里你可以逐个检查它们,直到找到你想要的。每个控件实例也有一个名为FindControl的方法,您可以使用它来通过它们的ID查找控件。你应该能够通过这种方式找到它们。从第一个公共父控制开始(例如arcPane)。

foreach (Control pane in arcPane.Panes) 
{ 
    foreach (Control c in pane.ContentContainer.Controls) 
    { 
     //examine c.ClientID or c.GetType() or some other 
        //property that you can recognize the control by 
    } 
} 
+0

仍然难以找到。可能会在我的C到VB转换(不是很好!)。 – user697508

+0

粘贴你认为vb相当于上面的代码 – 2012-01-31 21:36:47

+0

这不会工作,因为控制从回弹中清除回弹,因为它们是动态创建的。因此,arcPane.Panes.Count将为0 – clamchoda