Rock.Web.UI.Controls.GridFilter.RenderControl C# (CSharp) Method

RenderControl() public method

Outputs server control content to a provided T:System.Web.UI.HtmlTextWriter object and stores tracing information about the control if tracing is enabled.
public RenderControl ( System.Web.UI.HtmlTextWriter writer ) : void
writer System.Web.UI.HtmlTextWriter The object that receives the control content.
return void
        public override void RenderControl( HtmlTextWriter writer )
        {
            if ( this.Visible )
            {
                bool visible = _hfVisible.Value == "true";

                writer.AddAttribute( "class", "grid-filter" );
                writer.RenderBeginTag( HtmlTextWriterTag.Div );

                writer.Write( "<header>" );

                writer.RenderBeginTag( HtmlTextWriterTag.H3 );
                writer.Write( "Filter Options" );
                writer.RenderEndTag();

                _hfVisible.RenderControl( writer );

                writer.AddAttribute( "class", visible ? "fa fa-chevron-up toggle-filter" : "fa fa-chevron-down toggle-filter" );
                writer.RenderBeginTag( HtmlTextWriterTag.I );
                writer.RenderEndTag();

                writer.Write( "</header>" );

                // Filter Overview
                writer.AddAttribute( "class", "grid-filter-overview" );
                if ( visible )
                {
                    writer.AddStyleAttribute( HtmlTextWriterStyle.Display, "none" );
                }

                writer.RenderBeginTag( HtmlTextWriterTag.Div );

                var filterDisplay = new Dictionary<string, string>();
                AdditionalFilterDisplay.ToList().ForEach( d => filterDisplay.Add( d.Key, d.Value ) );

                var nonEmptyValues = _userPreferences.Where( v => !string.IsNullOrEmpty( v.Value ) ).ToList();
                if ( nonEmptyValues.Count > 0 )
                {
                    foreach ( var userPreference in nonEmptyValues )
                    {
                        DisplayFilterValueArgs args = new DisplayFilterValueArgs( userPreference );
                        if ( DisplayFilterValue != null )
                        {
                            DisplayFilterValue( this, args );
                        }

                        if ( !string.IsNullOrWhiteSpace( args.Value ) )
                        {
                            filterDisplay.AddOrIgnore( args.Name, args.Value );
                        }
                    }
                }

                if ( filterDisplay.Any() )
                {
                    writer.RenderBeginTag( HtmlTextWriterTag.Fieldset );
                    writer.WriteLine( "<h4>Enabled Filters</h4>" );
                    writer.WriteLine( "<div class='row'>" );
                    foreach( var filterNameValue in filterDisplay.OrderBy( f => f.Key ) )
                    {
                        writer.WriteLine( "<div class='col-md-3'>" );
                        writer.WriteLine( string.Format( "<label>{0}:</label> {1}", filterNameValue.Key, filterNameValue.Value ) );
                        writer.WriteLine( "</div>" );
                    }
                    writer.WriteLine( "</div>" );
                    writer.RenderEndTag();
                }

                writer.RenderEndTag();

                // Filter Entry
                writer.AddAttribute( "class", "grid-filter-entry" );
                if ( !visible )
                {
                    writer.AddStyleAttribute( HtmlTextWriterStyle.Display, "none" );
                }
                writer.RenderBeginTag( HtmlTextWriterTag.Div );

                writer.RenderBeginTag( HtmlTextWriterTag.Fieldset );

                writer.Write( "<h4>Filter Options</h4>" );

                base.RenderControl( writer );

                writer.RenderEndTag();

                _lbFilter.RenderControl( writer );

                if ( ClearFilterClick != null )
                {
                    writer.WriteLine();
                    _lbClearFilter.RenderControl( writer );
                }

                writer.RenderEndTag();

                writer.RenderEndTag();

                if ( _isDirty )
                {
                    SaveUserPreferences();
                    _isDirty = false;
                }

                RegisterJavaScript();
            }
        }