2

我在我的 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;

    }
}

但我无法从我的代码隐藏注释中访问下拉列表:我可以在第一步(创建用户)中获取控件的句柄。

但下一步中的任何控件始终返回 null。

这是我正在使用的代码

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

我总是返回一个空值。

请注意,这很好用

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

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

谢谢您的帮助


尝试了 Gregors 的建议。没运气。我的总是出现为空。

在此处输入图像描述

如果这有帮助:我的向导在用户控件内..使用用户控件的页面在母版页内.....

4

2 回答 2

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;

快乐编码!

于 2013-03-14T21:30:18.860 回答
0

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

因为我在模板向导步骤中,所以我必须将向导步骤转换为模板向导步骤。

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

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

谢谢大家的帮助

于 2013-03-20T10:51:50.637 回答