我有一个手风琴嵌套在手风琴内。我不确定你甚至可以做到这一点,但你可以!有用。然而...
在内部手风琴中,我有一个中继器。当我尝试设置 RepeaterName.DataSource 时,我得到一个空引用异常。我试图通过使用 this.FindControl 来强制解决这个问题,但仍然没有乐趣。后面的代码只是没有看到嵌套 Accordion 中的中继器。
我很沮丧,但并不惊讶。
我真的不想“取消嵌套”这些。我拥有的是作者手风琴,然后在每个作者窗格中,我都有另一个他们作品的手风琴。
所以,我们有
作者1
第1条
第二条
作者2
第1条
第二条
第三条
等等
编辑:在后面添加标记和代码
<AjaxToolkit:AccordionPane runat="server" ID="JohnBunyanPane">
<Header> John Bunyan</Header>
<Content>
<AjaxToolkit:Accordion ID="JohnBunyanInternalAccordion" runat="server"
SelectedIndex="-1"
CssClass="accordion"
HeaderCssClass="accordionHeader"
HeaderSelectedCssClass="accordionHeaderSelected"
ContentCssClass="accordionContent"
AutoSize="None"
FadeTransitions="true"
TransitionDuration="250"
FramesPerSecond="40"
RequireOpenedPane="false"
SuppressHeaderPostbacks="true">
<Panes>
<AjaxToolkit:AccordionPane runat="server" ID="GraceAboundingPane">
<Header> Grace Abounding</Header>
<Content>
<div style="overflow-y:scroll;height:450px">
<asp:UpdatePanel ID="GraceAboundingUpdatePanel" runat="server">
<ContentTemplate>
<asp:Repeater ID="GraceAboundingRepeater" runat="server">
<ItemTemplate>
<br />
<span>
<asp:Label ID="GraceAboundingBody" runat="server" Width="100%" Text='<%# Eval("Body")%>'></asp:Label>
</span>
<br />
<asp:Image ID="Image1" runat="server" ImageUrl="~/Images/separator.jpg" />
<br /><br />
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</Content>
</AjaxToolkit:AccordionPane>
</Panes>
</AjaxToolkit:Accordion>
</Content>
</AjaxToolkit:AccordionPane>
这是填充它的调用:
try
{
myDataAdapter.Fill(myDataSet);
DataTable myDataTable = myDataSet.Tables[0];
var childAccordionPane = (AccordionPane)this.FindControl("JohnBunyanPane");
var repeater = (Repeater)childAccordionPane.FindControl("GraceAboundingRepeater");
//Repeater myRepeater = (Repeater)childAccordionPane.FindControl("GraceAboundingRepeater");
//GraceAboundingRepeater.DataSource = myDataTable;
//GraceAboundingRepeater.DataBind();
repeater.DataSource = myDataTable;
repeater.DataBind();
}