我在嵌套的手风琴中有一个下拉列表。
在页面加载时,我想将该下拉列表与提供的数据绑定。但是,当该方法尝试查找下拉列表控件时,它找不到它并将其视为空实体。这会破坏页面加载。
这是我引用的代码示例:
<Panes>
<ajaxToolkit:AccordionPane ID="apPane1" runat="server" Visible="true">
<Header>
<span class="AccordionLink">Header1</span>
</Header>
<Content>
<table style="width: 75%">
<tr>
<td style="padding: 0px 0px 0px 15px">
<asp:Panel ID="pnllandingpanel" runat="server">
<ajaxToolkit:Accordion ID="AccordionChartConfig" runat="server" SelectedIndex="0" RequireOpenedPane="false" CssClass="accordian" HeaderCssClass="headerCssClass" FadeTransitions="true" TransitionDuration="500" AutoSize="None" ContentCssClass="contentCssClass" HeaderSelectedCssClass="headerSelectedCssClass">
<Panes>
<ajaxToolkit:AccordionPane ID="apPanelLevel2" runat="server">
<Header>
<span class="AccordionLink">Link2</span>
</Header>
<Content>
<asp:DropDownList ID="ddlLoadValue" runat="server"></asp:DropDownList>
</Content>
</Header>
</ajaxToolkit:AccordionPane>
</Panes>
</td>
</tr>
</table>
</Content>
</ajaxToolkit:AccordionPane>
</Accordion>
我的 C# 代码很简单:
ddlLoadValue = BindDDLValue(ddlLoadValue);
背后的代码有效。我不担心这个。
如果我不需要在页面加载时加载下拉列表,它就可以正常工作。当我进行新条目时会发生这种情况。但是,当我尝试加载已保存的条目时,我需要填充嵌套手风琴中的控件。
我尝试确保手风琴已启用,并且所选索引是带有下拉列表的索引。我期待程序找到控件并填充下拉列表。
解决方案是使用 FindControl 手动浏览巢。
AjaxControlToolkit.AccordionPane optionspane = (AjaxControlToolkit.AccordionPane)Master.FindControl("MainContent").FindControl("apPanel").FindControl("AccordionChartConfig").FindControl("apPanelLevel2");
DropDownList dXAxisFormat = (DropDownList)optionspane.FindControl("ddlLoadValue");
执行此操作后我能够正确渲染页面。