asp.net create uzer wizard getting a handle on controls in custom steps

心已入冬 提交于 2019-12-11 02:33:34

问题


I have added an extra step to my uzerwizard

<asp:TemplatedWizardStep id="stpPayment" runat="server" Title="Payment">
        <ContentTemplate>
<asp:DropDownList ID="cmbSubs" runat="server" ClientIDMode="Static" 
                            Width="200px">

                            <asp:ListItem Value="month">Monthly Subscription</asp:ListItem>
                            <asp:ListItem Value="year">Annual Subscription</asp:ListItem>
                        </asp:DropDownList>

i am successfully navigating to the new step

protected void NewUserprofileWizard_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    if (NewUserprofileWizard.ActiveStepIndex == 0)
    {
        NewUserprofileWizard.ActiveStepIndex = 1;

    }
}

but I cant get access to the dropdownlist from my codebehind note: i can get a handle onto the controls in the 1st (createuser) step.

but any controls in the next step always return a null.

this is the code i am using

DropDownList cmb = (DropDownList)NewUserprofileWizard.WizardSteps[1].FindControl("cmbSubs");

i always return a null.

note that this works just fine

TextBox tmp = (TextBox)NewUserprofileWizard.CreateUserStep.ContentTemplateContainer.FindControl("Email");
    userProfile.AccountEmail = tmp.Text;

problem seems unique to custom steps

Thanks for the help


Tried Gregors suggestion. no luck. mine always comes up as null.

if thsi helps any: my wizard is inside a user control.. the page that uses the user control is inside a master page.....


回答1:


Here is little sample I have created for you, first aspx code:

        <asp:CreateUserWizard ID="CreateUserWizard1" runat="server" OnNextButtonClick="CreateUserWizard1_NextButtonClick">
            <WizardSteps>
                <asp:WizardStep runat="server" Title="My Custom Step">
                    <asp:DropDownList ID="cmbSubs" runat="server" ClientIDMode="Static"
                        Width="200px">
                        <asp:ListItem Value="month">Monthly Subscription</asp:ListItem>
                        <asp:ListItem Value="year">Annual Subscription</asp:ListItem>
                    </asp:DropDownList>
                </asp:WizardStep>
                <asp:CreateUserWizardStep runat="server" />
                <asp:CompleteWizardStep runat="server" />
            </WizardSteps>
        </asp:CreateUserWizard>

And now the code to find first dropdown:

    protected void CreateUserWizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
    {
        if (e.CurrentStepIndex == 0)
        {
            //get instance to dropdown...
            string selectedValue = null;
            string controlId = null;
            foreach (var item in CreateUserWizard1.WizardSteps[0].Controls)
            {
                DropDownList ddl = item as DropDownList;
                if (ddl != null)
                {
                    selectedValue = ddl.SelectedValue;
                    controlId = ddl.ClientID;
                    break;
                }
            }       
        }
    }

Of course you can also find your dropdown like this:

DropDownList cmbSubs = CreateUserWizard1.WizardSteps[0].FindControl("cmbSubs") as DropDownList;

Happy coding!




回答2:


it appears that today my google foo was doing much better

because i am in a templateswizardstep, i have to cast the wizardstep into the templatedwizardstep.

from here i can now find the control. whooohoo!

TemplatedWizardStep step = (TemplatedWizardStep)NewUserprofileWizard.WizardSteps[1];
cmb = (DropDownList)step.ContentTemplateContainer.FindControl("cmbSubs"); 

Thanks all for the help



来源:https://stackoverflow.com/questions/15351826/asp-net-create-uzer-wizard-getting-a-handle-on-controls-in-custom-steps

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!