我有一个向导控件,我正在添加一个包含简单表的用户控件 一些输入字段基于用户输入他们有多少孩子。例如:你有多少孩子,所以我根据该循环添加了用户控件ascx 进入我的巫师的第5步也是在一个母版页。
然后我使用findcontrol来尝试获取那些输入框,这样我就可以将数据保存到我的数据库中,findcontrol总是为null,即使用户控制在visable中并在回发后重新创建页面加载。
任何帮助非常感谢。 找到控制按钮: 受保护的子Button1_Click(ByVal sender As Object,ByVal e As 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 sender As Object,ByVal e As 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
用户控制:
&lt;%@ Control Language =“VB”AutoEventWireup =“false”CodeFile =“MinorChild.ascx.vb”Inherits =“MinorChild”%&gt;
名称
年龄
SS#
DOB
find控件在howmanychildren字段中是静态的
答案 0 :(得分:1)
我自己想通了 基本上,你必须重新考虑容器,这就是其他地方所说的所有人,但我一直无视答案 正确的代码是
Dim textbox As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Minor_1").FindControl("Child_Name"), TextBox)
您必须首先引用用户控件名称,然后在其中进行搜索,即使客户端源是欺骗性的。