📄 collapsebar.cs
字号:
if ( item.Title != this.ActiveItem ) {
writer.AddStyleAttribute( "display", "none" );
}
if ( !this.Height.IsEmpty ) {
writer.AddStyleAttribute( "height", "100%" );
}
this.ContentStyle.AddAttributesToRender( writer );
writer.RenderBeginTag( "div" );
item.RenderControl( writer );
writer.RenderEndTag();
}
}
}
private void RenderUpLevelButtons( HtmlTextWriter writer ) {
foreach ( CollapseBarItem item in this.Items ) {
if ( item.Visible ) {
Boolean itemIsCurrent = ( item.Title == this.ActiveItem );
if ( !itemIsCurrent ) {
writer.AddAttribute( HtmlTextWriterAttribute.Onclick, this.Page.GetPostBackEventReference( this, item.Title ) );
writer.AddStyleAttribute( "cursor", "pointer" );
}
System.Web.UI.WebControls.Style itemStyle = new System.Web.UI.WebControls.Style();
if ( itemIsCurrent ) {
itemStyle.CopyFrom( this.CurrentButtonStyle );
}
itemStyle.MergeWith( this.ButtonStyle );
itemStyle.AddAttributesToRender( writer );
writer.AddStyleAttribute( "padding", "5px" );
writer.AddStyleAttribute( "white-space", "nowrap" );
writer.RenderBeginTag( "div" );
HyperLink buttonControl = new HyperLink();
if ( !itemIsCurrent && this.Page != null ) {
buttonControl.NavigateUrl = this.Page.GetPostBackClientHyperlink( this, item.Title );
} else {
buttonControl.NavigateUrl = "";
}
buttonControl.BorderWidth = Unit.Pixel( 0 );
buttonControl.ForeColor = itemStyle.ForeColor;
buttonControl.Text = item.Title;
buttonControl.RenderControl( writer );
writer.RenderEndTag();
}
}
}
#endregion
#region Render DownLevel
private void RenderContentsDownLevel( HtmlTextWriter writer ) {
RenderDownLevelButtons( writer );
RenderDownLevelCurrentItem( writer );
}
private void RenderDownLevelButtons( HtmlTextWriter writer ) {
foreach( CollapseBarItem item in this.Items ) {
if ( item.Visible ) {
Boolean itemIsCurrent = ( item.Title == this.ActiveItem );
System.Web.UI.WebControls.Style itemStyle = new System.Web.UI.WebControls.Style();
if ( itemIsCurrent ) {
itemStyle.CopyFrom( this.CurrentButtonStyle );
}
itemStyle.MergeWith( this.ButtonStyle );
itemStyle.AddAttributesToRender( writer );
writer.AddStyleAttribute( "padding", "5px" );
writer.RenderBeginTag( "div" );
if ( itemIsCurrent ) {
writer.Write( item.Title );
} else {
Button itemButton = new Button();
itemButton.ID = this.UniqueID + ":" + item.Title;
itemButton.Text = item.Title;
itemButton.ForeColor = itemStyle.ForeColor;
itemButton.BackColor = itemStyle.BackColor;
itemButton.RenderControl( writer );
}
writer.RenderEndTag();
}
}
}
private void RenderDownLevelCurrentItem( HtmlTextWriter writer ) {
foreach( CollapseBarItem item in this.Items ) {
if ( item.Title == this.ActiveItem ) {
if ( item.Visible ) {
if ( !this.Height.IsEmpty ) {
writer.AddStyleAttribute( "height", "100%" );
}
this.ContentStyle.AddAttributesToRender( writer );
writer.RenderBeginTag( "div" );
item.RenderControl( writer );
writer.RenderEndTag();
}
break;
}
}
}
#endregion
private Boolean RenderUpLevel {
get {
return this.Page != null && this.UplevelBrowser;
}
}
private Boolean UplevelBrowser {
get {
if ( HttpContext.Current == null ) { return true; }
return !( HttpContext.Current.Request.Browser.TagWriter.Equals( typeof( Html32TextWriter ) ) );
}
}
#endregion
#region ClientScript
private static readonly String scriptKey = "CommunityServer.Controls.CollapseBar";
private static readonly String arrayName = "CommunityServer_CollapseBars";
private void RegisterClientScript() {
if ( Page == null ) {
return;
}
String currentItemIndex = "0";
for( Int32 i = 0; i < this.Items.Count; i++ ) {
CollapseBarItem item = this.Items[ i ];
if ( item.Title == this.CurrentItem ) {
currentItemIndex = i.ToString();
break;
}
}
this.Page.RegisterHiddenField( ClientSideCurrentItemTrackerID, currentItemIndex );
if ( !Page.IsClientScriptBlockRegistered( scriptKey ) ) {
this.Page.RegisterClientScriptBlock( scriptKey, String.Format( "<script type='text/javascript' language='javascript' src='{0}'></script>", Page.ResolveUrl( "~/Utility/CollapseBarScript.js" ) ) );
}
Page.RegisterArrayDeclaration( arrayName, "{ ID:'" + this.ClientID + "', InitialSelectedIndex:'" + currentItemIndex.ToString() + "', HiddenID:'" + ClientSideCurrentItemTrackerID + "', ItemCount:'" + this.Items.Count.ToString() + "' }" );
if( !Page.IsStartupScriptRegistered( scriptKey ) ) {
this.Page.RegisterStartupScript( scriptKey, String.Format( @"
<script type='text/javascript' language='javascript'>
<!--
CommunityServer_CollapseBar_Init( '{0}' );
//-->
</script>", this.Page.Request.ApplicationPath ) );
}
}
#endregion
#region State Cookie
/// <summary>
/// Loads state from the state cookie.
/// </summary>
protected virtual void LoadStateCookie() {
HttpCookie cookie = this.Page.Request.Cookies[ StateCookieName ];
if ( cookie != null ) {
String savedState = cookie.Value;
CollapseBarItem storedItem = this.ItemByIndex( savedState );
if ( storedItem != null ) {
this.CurrentItem = storedItem.Title;
}
}
}
/// <summary>
/// Saves state to the state cookie.
/// </summary>
protected virtual void SaveStateCookie() {
if ( this.Items.Count == 0 ) {
return;
}
HttpCookie cookie = this.Page.Request.Cookies[ StateCookieName ];
if ( cookie == null ) {
cookie = new HttpCookie( StateCookieName );
}
for( Int32 i = 0; i < this.Items.Count; i++ ) {
CollapseBarItem item = this.Items[ i ];
if ( item.Title == this.ActiveItem ) {
cookie.Value = i.ToString();
}
}
cookie.Expires = System.DateTime.Now.Add( TimeSpan.FromDays( 30 ) );
cookie.Path = this.Page.Request.ApplicationPath;
this.Page.Response.Cookies.Add(cookie) ;
}
private String StateCookieName {
get {
return "CollapseBar:" + this.ClientID;
}
}
#endregion
#region IPostBackEventHandler Members
/// <exclude/>
public void RaisePostBackEvent(string eventArgument) {
this.CurrentItem = eventArgument;
}
#endregion
#region IPostBackDataHandler Members
/// <exclude/>
public void RaisePostDataChangedEvent() {
// no event
}
/// <exclude/>
public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection) {
// Load from the hidden input set with clientside changes
String hiddenInputValue = postCollection[ this.ClientSideCurrentItemTrackerID ];
if ( hiddenInputValue != null ) {
CollapseBarItem postedItem = this.ItemByIndex( hiddenInputValue );
if ( postedItem != null && this.CurrentItem != postedItem.Title ) {
this.CurrentItem = postedItem.Title;
return false;
}
}
// Load from a click on a title, from a downlevel browser
foreach( CollapseBarItem item in this.Items ) {
if ( postCollection[ postDataKey + ":" + item.Title ] != null ) {
this.CurrentItem = item.Title;
return false;
}
}
return false;
}
private CollapseBarItem ItemByIndex( String itemIndex ) {
try {
Int32 index = Int32.Parse( itemIndex );
if ( 0 <= index && index < this.Items.Count ) {
return this.Items[ index ];
}
} catch( System.FormatException ex ) {
System.Diagnostics.Debug.WriteLine( ex );
}
return null;
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -