📄 accordionpane.cs
字号:
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AjaxControlToolkit
{
/// <summary>
/// The AccordionPane control represents a child header/content pair
/// of the AccordionControl.
/// </summary>
[ParseChildren(true)]
[PersistChildren(false)]
[ToolboxData("<{0}:AccordionPane runat=\"server\"></{0}:AccordionPane>")]
[System.Drawing.ToolboxBitmap(typeof(AccordionPane), "Accordion.Accordion.ico")]
public class AccordionPane : WebControl
{
/// <summary>
/// Header Container
/// </summary>
private AccordionContentPanel _header;
/// <summary>
/// Header Template
/// </summary>
private ITemplate _headerTemplate;
/// <summary>
/// Content Container
/// </summary>
private AccordionContentPanel _content;
/// <summary>
/// Content Template
/// </summary>
private ITemplate _contentTemplate;
/// <summary>
/// Header Container
/// </summary>
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public AccordionContentPanel HeaderContainer
{
get
{
EnsureChildControls();
return _header;
}
}
/// <summary>
/// Header CSS Class
/// </summary>
[Browsable(true)]
[Category("Appearance")]
[Description("CSS class for Accordion Pane Header")]
public string HeaderCssClass
{
get
{
EnsureChildControls();
return _header.CssClass;
}
set
{
EnsureChildControls();
_header.CssClass = value;
}
}
/// <summary>
/// Header Template
/// </summary>
[Browsable(false)]
[DefaultValue(null)]
[Description("Accordion Pane Header")]
[PersistenceMode(PersistenceMode.InnerProperty)]
[TemplateContainer(typeof(AccordionContentPanel))]
[TemplateInstance(TemplateInstance.Single)]
public virtual ITemplate Header
{
get { return _headerTemplate; }
set { _headerTemplate = value; }
}
/// <summary>
/// Content Container
/// </summary>
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public AccordionContentPanel ContentContainer
{
get
{
EnsureChildControls();
return _content;
}
}
/// <summary>
/// Content CSS Class
/// </summary>
[Browsable(true)]
[Category("Appearance")]
[Description("CSS class for Accordion Pane Content")]
public string ContentCssClass
{
get
{
EnsureChildControls();
return _content.CssClass;
}
set
{
EnsureChildControls();
_content.CssClass = value;
}
}
/// <summary>
/// Content Template
/// </summary>
[Browsable(false)]
[DefaultValue(null)]
[Description("Accordion Pane Content")]
[PersistenceMode(PersistenceMode.InnerProperty)]
[TemplateContainer(typeof(AccordionContentPanel))]
[TemplateInstance(TemplateInstance.Single)]
public virtual ITemplate Content
{
get { return _contentTemplate; }
set { _contentTemplate = value; }
}
/// <summary>
/// Wrap the Controls collection to always ensure they have
/// been generated before they're accessed
/// </summary>
public override ControlCollection Controls
{
get
{
EnsureChildControls();
return base.Controls;
}
}
/// <summary>
/// Instantiate the templates into new child controls
/// </summary>
protected override void CreateChildControls()
{
// Create the controls
Controls.Clear();
Controls.Add(_header = new AccordionContentPanel(null, -1, AccordionItemType.Header));
Controls.Add(_content = new AccordionContentPanel(null, -1, AccordionItemType.Content));
// By default, collapse the content sections so the
// page loads without flicker (the selected section
// will be expanded again in the parent Accordion's
// OnPreRender)
_content.Collapsed = true;
// Load the templates into the controls
if (_headerTemplate != null)
_headerTemplate.InstantiateIn(_header);
if (_contentTemplate != null)
_contentTemplate.InstantiateIn(_content);
}
/// <summary>
/// Override FindControl to look first at this control, then the HeaderContainer,
/// and finally the ContentContainer when searching for controls
/// </summary>
/// <param name="id">ID of the control</param>
/// <returns>Control</returns>
public override Control FindControl(string id)
{
EnsureChildControls();
return base.FindControl(id) ?? _header.FindControl(id) ?? _content.FindControl(id);
}
/// <summary>
/// Prevent the opening tag of the control from being rendered
/// </summary>
/// <param name="writer">HtmlTextWriter</param>
public override void RenderBeginTag(HtmlTextWriter writer)
{
// Do not call base.RenderBeginTag...
}
/// <summary>
/// Prevent the closing tag of the control from being rendered
/// </summary>
/// <param name="writer">HtmlTextWriter</param>
public override void RenderEndTag(HtmlTextWriter writer)
{
// Do not call base.RenderEndTag...
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -