I'm trying to add more fields to the CreateUserWizardStep
, here is what I added:
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
<ContentTemplate>
<table border="0">
<tr>
<td align="right">
<asp:Label ID="NickNameLabel" runat="server" AssociatedControlID="NickName">Nick Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="NickName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="NickName"
ErrorMessage="Nick Name is required." ToolTip="Nick Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
</td>
</tr>
<%-- The default code is left unchanged, but not shown here --%>
</table>
</ContentTemplate>
</开发者_如何学编程asp:CreateUserWizardStep>
Then I tried to reference the objects like this
protected void NewUserWizard_CreatedUser(object sender, EventArgs e)
{
CreateUserWizardStep step = NewUserWizard.FindControl("CreateUserWizardStep1") as CreateUserWizardStep;
TextBox nickName = step.FindControl("NickName") as TextBox;
// insert additional information to the database
}
The problem is, I'm getting nulls for nickName
. Am I using FindControl("")
incorrectly?
you may want to use a recursive find control function such as here: http://stevesmithblog.com/blog/recursive-findcontrol/
FindControl
only
Searches the current naming container for the specified server control.
i.e. It only checks the current containers direct children.
You can use the Controls
property to return all the children of step
:
ControlCollection children = step.Controls;
and enumerate over this looking for your text box.
I don't know the control myself, but doesn't CreateUserWizardStep1.NickNameLabel work?
精彩评论