(C#) 动态添加可折叠项窗格

作者 :Christian Wenz

下载 PDF

AJAX 控件工具包中的可折叠控件提供了多个窗格,并允许用户一次显示其中一个窗格。 面板通常在页面本身中声明,但服务器端代码可用于实现相同的结果。

概述

AJAX 控件工具包中的可折叠控件提供了多个窗格,并允许用户一次显示其中一个窗格。 面板通常在页面本身中声明,但服务器端代码可用于实现相同的结果。

步骤

Accordion 控件向服务器端代码公开所有重要属性。 除其他事项外, Panes 属性授予对构成可折叠项的窗格集合的访问权限。 每个窗格的类型为 AccordionPane。 因此,创建此类窗格十分简单:

AccordionPane ap1 = new AccordionPane();

HeaderContainerAccordionPane 属性提供对窗格标题部分中 ASP.NET 控件的访问权限; ContentContainerAccordionPane 属性对窗格的内容部分执行相同的操作。 这允许 ASP.NET 代码将内容添加到窗格:

ap1.HeaderContainer.Controls.Add(new LiteralControl("Using Code"));
ap1.ContentContainer.Controls.Add(new 
    LiteralControl("Adding panes using code is really flexible."));

最后,必须将窗格 () 添加到 Panes Accordion 的 集合中:

acc1.Panes.Add(ap1);

下面是向 Accordion 控件添加两个窗格的完整服务器端代码:

<script runat="server">
void Page_Load() 
{
 if (!Page.IsPostBack)
 {
 AccordionPane ap1 = new AccordionPane();
 ap1.HeaderContainer.Controls.Add(new LiteralControl("Using Markup"));
 ap1.ContentContainer.Controls.Add(new 
 LiteralControl("Adding panes using markup is really simple."));
 AccordionPane ap2 = new AccordionPane();
 ap2.HeaderContainer.Controls.Add(new LiteralControl("Using Code"));
 ap2.ContentContainer.Controls.Add(new 
 LiteralControl("Adding panes using code is really flexible."));
 acc1.Panes.Add(ap1);
 acc1.Panes.Add(ap2);
 }
}
</script>

唯一缺少的元素是 Accordion 本身,这取决于是否存在 ASP.NET ScriptManager 控件:

<form id="form1" runat="server">
 <asp:ScriptManager ID="asm" runat="server" />
 <div>
 <ajaxToolkit:Accordion ID="acc1" runat="server" 
 HeaderCssClass="header" ContentCssClass="content" 
 Width="300px" FadeTransitions="true">
 </ajaxToolkit:Accordion>
 </div>
</form>

为了完成本示例,Accordion 控件中引用的两个 CSS 类为浏览器提供样式信息:

<style type="text/css">
 .header {background-color: blue;}
 .content {border: solid;}
</style>

可折叠项中的数据由服务器端代码动态添加

可折叠项中的数据由服务器端代码动态添加 (单击以查看全尺寸图像)