我正在使用AjaxControlToolKit。
我在标题模板中有一个带有图像的手风琴。 在Content-Template中有一个嵌套的Accordion。
这两个Accordions都在UserControl中。因此,父级Accordion在内容中有一个UserControl。
如果我要更改嵌套Accordion中的特定控件,嵌套的UserControl会调用父UserControl的公共方法,该方法会更改我提到的Image的源。
我这样做是因为我想避免使用DataBind,因为它负载很重。
虽然调试它似乎有效,因为新值设置为源并将存储到下一个Postback。但受访网站没有显示新值。
有没有办法更改值并在响应时显示它?
编辑 - 这里有一些条纹代码......
结构:
#Site
#DocumentationPanel-UserControl (OuterAccordion)
#InnerDocumentAccordion-UserControl (InnerAccordion)
#/DocumentationPanel
#/Site
条纹代码:
<table><tr><td>
<ajaxtoolkit:accordion id="accordionGrid" runat="server" style="overflow: visible;">
<%-- Header --%>
<headertemplate>
<img id="imgUserExamState1" runat="server" title="" alt="" src="" />
</headertemplate>
<%-- Contenter --%>
<contenttemplate>
<ajaxtoolkit:accordion id="accordionGridExaminations" runat="server">
<%-- Header --%>
<headertemplate>
<img id="imgUserExamState2" runat="server" title="" alt="" src="" />
</headertemplate>
<%-- Contenter --%>
<contenttemplate>
...
</contenttemplate>
</ajaxtoolkit:accordion>
</contenttemplate>
</ajaxtoolkit:accordion>
</td></tr></table>
现在我从InnerDocumentAccordion内部调用Parent,将其转换为DocumentationPanel并使用链接到外部Accordion的公共属性。 InnerDocumentAccordion-Control知道它所在的外部手风琴的PaneIndex,因此我可以直接调用所需的Pane并在标题中找到图像(imgUserExamState1)。 看起来像这样:
AccordionContentPanel acp = ((DocumentationPanel)this.ParentControl).AccordionGrid.Panes[this.ParentAccordionIndex].HeaderContainer;
HtmlImage image = ((HtmlImage)(acp.FindControl("imgUserExamState")));
image.Src = "funny.png";
我可以更改它,但在响应的网站中没有关于图像的更改。我试图调用DocumentationPanel的公共函数,因此在外部Accordion所在的同一类中所做的更改,但正如预期的那样 - 没有成功
我曾尝试重新绑定外部手风琴,但它表示在初始化,加载,预渲染等时无法进行任何修改。但这只是从一开始就尝试。