Использование FindControl

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

 <asp:CreateUserWizard ID="CreateUserWizard1" runat="server" CreateUserButtonText="Register">
    <WizardSteps>
        <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
            <ContentTemplate>
                <table class="style1">
                    <!-- snip -->
                    <td>
                        <asp:TextBox ID="UserName" runat="server" /><br />

                        <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" 
                            ControlToValidate="UserName" ErrorMessage="Username is required." 
                            Font-Size="Small" Display="Dynamic" ToolTip="Username is required.">
                            Username is required.
                        </asp:RequiredFieldValidator>
                    </td>
                </tr>
                <!-- snip -->
            </table>
            <asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal>
        </ContentTemplate>
        </asp:CreateUserWizardStep>
        <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server">
        </asp:CompleteWizardStep>
    </WizardSteps>
</asp:CreateUserWizard>
  

Как мне использовать FindControl , чтобы найти UserName TextBox ?

Я пробовал:

  • Dim createuserwizard = CType(sender, CreateUserWizard)
  • Dim userNameTextBox As TextBox = CType(createuserwizard.CreateUserStep.ContentTemplateContainer.FindControl("UserName"), TextBox)
  • Dim userNameTextBox As TextBox = CType(CreateUserWizardStep1.FindControl("UserName"), TextBox)

Но ни один из них не работает для меня.

Ответ №1:

Дочерний элемент управления UserWizardStep является элементом управления CreateUserStepContainer, поэтому вам придется использовать FindControl оттуда. Это будет работать…

 Dim userNameTextBox as TextBox = CType(CreateUserWizardStep1.Controls(0).FindControl("UserName"), TextBox)