简体   繁体   中英

asp.net + ddl SelectedIndexChanged not firing inside CreateUserWizard Content template

I am trying to trigger an SelectedIndexChanged from the ddlMake dropdownlist but the event is not firing, if I shift the ddlMake outside of my CreateUserWizard, it will work. Am I doing anything wrong:

  <asp:CreateUserWizard runat="server" ID="RegisterUser" ViewStateMode="Disabled" OnCreatingUser="RegisterUser_CreatingUser" OnCreatedUser="RegisterUser_CreatedUser" >
             <LayoutTemplate>
                 <asp:PlaceHolder runat="server" ID="wizardStepPlaceholder" />
                 <asp:PlaceHolder runat="server" ID="navigationPlaceholder" />
             </LayoutTemplate>
             <WizardSteps>
                 <asp:CreateUserWizardStep runat="server" ID="CreateUserWizardStep1">
                     <ContentTemplate>
                         <p class="message-info">
                             Passwords are required to be a minimum of <%: Membership.MinRequiredPasswordLength %> characters in length.
                         </p>
                         <p class="validation-summary-errors">
                             <asp:Literal runat="server" ID="ErrorMessage" />
                         </p>
                         <div class="row-fluid MT35">
                             <div class="span3">User ID:</div>
                             <div class="span8">
                                 <asp:TextBox runat="server" ID="UserName" />
                                 <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="UserName"
                                     CssClass="field-validation-error"
                                     ErrorMessage="The user name field is required." Display="Dynamic" />
                                 <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" Text="Username length must be between 5 to 12 characters without spacing."
                                     ControlToValidate="UserName" SetFocusOnError="true"
                                     ValidationExpression="^[a-zA-Z0-9'@&#_]{5,12}$" Display="Dynamic" />
                             </div>
                             <div class="row-fluid ">
                                 <div class="span3">Password:</div>
                                 <div class="span8">
                                     <asp:TextBox runat="server" ID="Password" TextMode="Password" />
                                     <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="Password"
                                         CssClass="field-validation-error" ErrorMessage="The password field is required." />
                                 </div>
                                 <div class="row-fluid ">
                                     <div class="span3">Confirm Password:</div>
                                     <div class="span8">
                                         <asp:TextBox runat="server" ID="ConfirmPassword" TextMode="Password" />
                                         <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="ConfirmPassword"
                                             CssClass="field-validation-error" Display="Dynamic" ErrorMessage="The confirm password field is required." />
                                         <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="Password" ControlToValidate="ConfirmPassword"
                                             CssClass="field-validation-error" Display="Dynamic" ErrorMessage="The password and confirmation password do not match." />
                                     </div>
                                 </div>

                                 <div class="row-fluid MT35">
                                     <div class="span3">Your Car:</div>
                                     <div class="span8 YourCarInformation">
                                     <asp:DropDownList ID="ddlCarMake" OnSelectedIndexChanged="ddlMake_SelectedIndexChanged" AutoPostBack="True" runat="server" CssClass="span12"></asp:DropDownList>
                                     <asp:DropDownList ID="ddlCarModel" runat="server" CssClass="span12"></asp:DropDownList>
                                     <asp:TextBox ID="txtRegistration" CssClass="pull-left" runat="server" placeholder="registration date dd/mm/yyyy"></asp:TextBox>
                                 </div>
                                     </div>
                                 </div>
                                 <div class="row-fluid">
                                     <div class="span3">Recieve Newsletter:</div>
                                     <div class="span8 RadioBtn">
                                         <label class="radio">
                                             <asp:RadioButtonList ID="rbNewsLetter" runat="server" RepeatDirection="Horizontal">
                                                 <asp:ListItem Text="Yes" Value="true" Selected="True" />
                                                 <asp:ListItem Text="No" Value="false" />
                                             </asp:RadioButtonList>
                                         </label>
                                     </div>
                                 </div>
                             </div>
                         </div>
                     </ContentTemplate>
                     <CustomNavigationTemplate />
                 </asp:CreateUserWizardStep>
             </WizardSteps>
         </asp:CreateUserWizard>

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"];

            DropDownList ddlCarMake =
                (DropDownList)CreateUserWizardStep1.ContentTemplateContainer.FindControl("ddlCarMake");
            DropDownList ddlCarModel =
                (DropDownList)CreateUserWizardStep1.ContentTemplateContainer.FindControl("ddlCarModel");

            ddlCarMake.DataSource = ds.Tables[0];
            ddlCarMake.DataTextField = "CarMake";
            ddlCarMake.DataValueField = "CarMake";
            ddlCarMake.DataBind();
            ddlCarMake.Items.Insert(0, new ListItem("Any", ""));
            ddlCarMake.Items.Insert(ds.Tables[0].Rows.Count + 1, new ListItem("Others", "Others"));

            ddlCarModel.Items.Insert(0, new ListItem("Any", ""));
        }
    }

protected void ddlMake_SelectedIndexChanged(object sender, EventArgs e)
{
    VehicleBLL vehicleBll = new VehicleBLL();

    DropDownList ddlCarMake = (DropDownList)CreateUserWizardStep1.ContentTemplateContainer.FindControl("ddlCarMake");
    DropDownList ddlCarModel = (DropDownList)CreateUserWizardStep1.ContentTemplateContainer.FindControl("ddlCarModel");

    DataSet ds = null;
    if (ddlCarMake.SelectedIndex != 0)
    {
        ds = vehicleBll.GetCarModel(ddlCarMake.SelectedValue);

        ddlCarModel.DataSource = ds.Tables[0];
        ddlCarModel.DataTextField =  "CarModel";
        ddlCarModel.DataValueField = "CarModel";
        ddlCarModel.DataBind();

        ddlCarModel.Items.Insert(0, new ListItem("Any", ""));
    }
}

好的,在半天后找到答案,删除CreateUserWizard控件中的ViewStateMode =“Disabled”,一切正常。

我认为你必须首先将下拉列表放在更新面板中然后将autopostback放入dropdownlist属性为true,这将解决问题

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM