asp.net创建uzer向导在自定义步骤中获取控件的句柄

时间:2013-03-12 01:39:28

标签: asp.net webforms asp.net-membership

我为我的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>

        

我成功导航到新步骤

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

    }
}

但我无法从我的代码隐藏中访问下拉列表 注意:我可以在1st(createuser)步骤中处理控件。

但是下一步中的任何控件总是返回null。

这是我正在使用的代码

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

我总是返回null。

请注意,这很好用

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

问题似乎是自定义步骤所独有的

感谢您的帮助


试过Gregors的建议。没运气。我的总是空着。

enter image description here

如果有任何帮助: 我的向导在用户控件中.. 使用用户控件的页面位于母版页面.....

2 个答案:

答案 0 :(得分:1)

以下是我为您创建的一些示例,第一个aspx代码:

        <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>

现在找到第一个下拉列表的代码:

    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;
                }
            }       
        }
    }

当然你也可以找到这样的下拉列表:

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

快乐的编码!

答案 1 :(得分:0)

看来今天我的谷歌foo做得好多了

因为我在模板wizardstep中,我必须将wizardstep投射到templatedwizardstep。

从这里我现在可以找到控件。 whooohoo!

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

感谢大家的帮助