我正在使用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控件?
答案 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