如何在WizardStep中找到Control?

时间:2013-07-08 16:37:44

标签: c# asp.net findcontrol

我正在使用CreateWizardStep为我的网站创建用户...我添加了新的步骤并在步骤内放了一个CheckBoxList,但是我试图搜索这个控件但它返回null引用错误,在代码下面剪断:

ASPX

<asp:CreateUserWizard ID="RegisterUserWithRoles" runat="server" ContinueDestinationPageUrl="~/Default.aspx" LoginCreatedUser="False" OnActiveStepChanged="RegisterUserWithRoles_ActiveStepChanged" ActiveStepIndex="1">
    <WizardSteps>
        <asp:CreateUserWizardStep runat="server" />
        <asp:WizardStep ID="SpecifyRolesStep" runat="server" AllowReturn="False" StepType="Step" Title="Specify Roles">
            <asp:CheckBox ID="RoleList" runat="server" />
        </asp:WizardStep>
        <asp:CompleteWizardStep runat="server" />
    </WizardSteps>
</asp:CreateUserWizard>

C#

// Reference the SpecifyRolesStep WizardStep .
WizardStep SpecifyRolesStep = RegisterUserWithRoles.FindControl("SpecifyRolesStep") as WizardStep;

// Reference the RoleList CheckBoxList 
CheckBoxList RoleList = SpecifyRolesStep.FindControl("RoleList") as CheckBoxList;

// Bind the set of roles to RoleList 
RoleList.DataSource = System.Web.Security.Roles.GetAllRoles();
RoleList.DataBind();

如何在StepWizard中找到这个CheckBoxList控件?

2 个答案:

答案 0 :(得分:1)

它可能为null,因为as关键字正在尝试并且无法将复选框强制转换为复选框列表。

尝试将RoleList更改为<asp:CheckBoxList ID="RoleList" runat="server"> </asp:CheckBoxList>

答案 1 :(得分:0)

在访问控件之前,您必须先进入向导步骤

if (Wizard1.ActiveStep.Title == "Specify Roles")
        {
            CheckBox RoleList = RegisterUserWithRoles.ActiveStep.FindControl("RoleList") as CheckBox;

        }

我在这里找到了这个: http://forums.asp.net/t/1265377.aspx/1

相关问题