2009-09-11 41 views
1

我有一个向导控件,在此我添加一个包含一个简单表的用户控件,其中包含一些基于用户输入他们有多少孩子的输入字段。例如:你有多少个孩子,所以我添加了用户控件ascx,该用户控件基于该循环 ,进入我的向导的第5步,这也位于母版页中。FindControl没有在向导控件中找到dynamcily添加的用户控件

然后我使用findcontrol来尝试获取这些输入框,这样我就可以将数据保存到我的数据库中,即使用户控制可见并在发布后重新创建页面加载后,我仍然可以将数据保存到我的数据库。

任何帮助非常感谢。 查找控制按钮: 保护小组的button1_Click(BYVAL发件人为对象,BYVALË作为System.EventArgs)把手Button1.Click

Dim numbchildren As Integer = CInt(Howmanychildren.Text) 

    For i As Integer = 1 To numbchildren - 1 

     Dim textbox As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Minor_1_Child_Name"), TextBox) 
     'Dim textbox2 As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Howmanychildren"), TextBox) 


     If textbox IsNot Nothing Then 

      Response.Write("Found TextBox1 <br>") 
      Dim val As String = textbox.Text 
      Response.Write(val & "<br>") 

     Else 
      Response.Write("not found" & "<br>") 
     End If 

     ' Insert into DB 
     'SaveValueToDatabase(val) 
    Next 

End Sub 

用户控制附加功能上下拉:

保护小组Doyouhavechildren_SelectedIndexChanged(BYVAL发件人为对象,BYVALË作为System.EventArgs)把手Doyouhavechildren.SelectedIndexChanged

Dim numbchildren As Integer = CInt(Howmanychildren.Text) 
    Dim cnt As Integer = 1 


    'Panel1.Controls.Clear() 

    Select Case Doyouhavechildren.SelectedIndex 
     Case 0 



      ViewState.Add("Doyouhavechildren", numbchildren) 


      Do While cnt <= numbchildren 

       Dim uc As Web.UI.UserControl = DirectCast(Page.LoadControl("MinorChild.ascx"), Web.UI.UserControl) 
       uc.ID = "Minor_" + cnt.ToString() 
       Wizard1.ActiveStep.Controls.Add(uc) 



       cnt = cnt + 1 
      Loop 
      Exit Select 
     Case 1 

      Exit Select 
    End Select 

End Sub 

用户控制:

<%@控制语言= “VB” AutoEventWireup = “假” 的CodeFile = “MinorChild.ascx.vb” 继承= “MinorChild” %>

名称

年龄

SS#

DOB

在howmanychildren字段是静态

回答

1

我想通了自己的发现控制工程 基本上,你必须全球化志愿服务青年的容器,那是什么大家都随处可见其他地方说但我一直忽略答案 正确的代码是

Dim textbox As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Minor_1").FindControl("Child_Name"), TextBox) 

您必须首先参照用户控件名称,然后在其中进行搜索,即使客户端源是有区别的。