0

我正在使用 CreateWizardStep 为我的网站创建用户...我添加了新步骤并在步骤中放置了一个 CheckBoxList,但我正在尝试搜索此控件,但它返回空引用错误,位于代码片段下方:

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 控件?

4

2 回答 2

1

它可能为空,因为as关键字正在尝试将复选框转换为复选框列表,但未能成功。

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

于 2013-07-08T16:43:21.857 回答
0

您必须先进入向导步骤,然后才能访问控件

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

        }

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

于 2013-07-08T16:47:00.807 回答