我正在制作一个包含用于用户输入的组合框的向导控件。我TemplatedWizardStep
用于控制外观和导航。我了解到在这样的步骤中访问控件需要使用FindControl(id)
.
我的向导看起来基本上是这样的,去掉了很多格式:
<asp:Wizard id="wizEntry" runat="server" >
<WizardSteps>
<asp:TemplatedWizardStep id="stepFoo" Title="Foo" runat="server" >
<table id="TableFoo" runat="server" >
<tr id="Row1">
<td id="Row1Cell1">
<asp:DropDownList id="DDListBar" runat="server" ></asp:DropDownList>
</td></tr></table></asp:TemplatedWizardStep></WizardSteps></asp:Wizard>
我想获取DDListBar
内部向导的选定值wiz
。我的研究表明,我应该调用FindControl
向导来获取步骤,然后调用步骤来获取控制权。我的代码:
DropDownList ddlBar = null;
bar = (DropDownList)wizEntry.FindControl("stepFoo").FindControl("DDListBar");
当我运行这个时,bar
返回为null
. 所以我把电话分开了FindControl
。我确定正确找到了向导步骤,但没有找到组合框。事实上,向导步骤中唯一的控制是表格。
我希望有一个我没有学过的简单解决方案,而不是嵌套控件层次结构中每个级别的 FindControl。
(遗留代码使用一个长表,每行一个组合框。C# 代码文件直接通过 ID 引用这些组合框。但表太长,客户需要向导将数据输入分解为小单元。 )
编辑1:到目前为止,这个答案对我的研究很有帮助。