从嵌套的Accordion更改手风琴标题中的控件

时间:2014-01-06 15:07:00

标签: c# asp.net user-controls nested accordion

我正在使用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所在的同一类中所做的更改,但正如预期的那样 - 没有成功


我曾尝试重新绑定外部手风琴,但它表示在初始化,加载,预渲染等时无法进行任何修改。但这只是从一开始就尝试。

0 个答案:

没有答案