void ControlTreeDataLoader.LoadData()
        {
            CssClass =
                CssClass.ConcatenateWithSpace(
                    allStylesBothStatesClass + " " +
                    ( style == SectionStyle.Normal ? getSectionClass( normalClosedClass, normalExpandedClass ) : getSectionClass( boxClosedClass, boxExpandedClass ) ) );

            if( heading.Any() ) {
                var headingControls =
                    new WebControl( HtmlTextWriterTag.H1 ) { CssClass = headingClass }.AddControlsReturnThis( heading.GetLiteralControl() )
                        .ToSingleElementArray()
                        .Concat( postHeadingControls );
                if( expanded.HasValue ) {
                    var toggleClasses = style == SectionStyle.Normal ? new[] { normalClosedClass, normalExpandedClass } : new[] { boxClosedClass, boxExpandedClass };

                    var headingContainer =
                        new Block(
                            new[] { new EwfLabel { Text = "Click to Expand", CssClass = closeClass }, new EwfLabel { Text = "Click to Close", CssClass = expandClass } }.Concat(
                                headingControls ).ToArray() ) { CssClass = headingClass };
                    var actionControlStyle = new CustomActionControlStyle( c => c.AddControlsReturnThis( headingContainer ) );

                    this.AddControlsReturnThis(
                        disableStatePersistence
                            ? new CustomButton( () => "$( '#" + ClientID + "' ).toggleClass( '" + StringTools.ConcatenateWithDelimiter( " ", toggleClasses ) + "', 200 )" )
                                {
                                    ActionControlStyle = actionControlStyle
                                }
                            : new ToggleButton( this.ToSingleElementArray(), actionControlStyle, toggleClasses: toggleClasses ) as Control );
                }
                else {
                    var headingContainer = new Block( headingControls.ToArray() ) { CssClass = headingClass };
                    this.AddControlsReturnThis( new Block( headingContainer ) );
                }
            }
            if( contentControls.Any() )
                this.AddControlsReturnThis( new Block( contentControls.ToArray() ) { CssClass = contentClass } );
        }
        private Block getExportButton( IEnumerable<object> headers, List<IEnumerable<object>> tableData )
        {
            var block =
                new Block(
                    new PostBackButton(
                        PostBack.CreateFull(
                            id: PostBack.GetCompositeId( setup.PostBackIdBase, "export" ),
                            actionGetter: () => new PostBackAction(
                                                    new SecondaryResponse(
                                                    () => new EwfResponse(
                                                              ContentTypes.Csv,
                                                              new EwfResponseBodyCreator(
                                                              output => {
                                                                  var csv = new CsvFileWriter();
                                                                  var writer = new StreamWriter( output );

                                                                  csv.AddValuesToLine( headers.ToArray() );
                                                                  csv.WriteCurrentLineToFile( writer );
                                                                  foreach( var td in tableData ) {
                                                                      csv.AddValuesToLine( td.ToArray() );
                                                                      csv.WriteCurrentLineToFile( writer );
                                                                  }
                                                              } ),
                                                              () => "{0} {1}".FormatWith( setup.ExportFileName, DateTime.Now ) + FileExtensions.Csv ) ) ) ),
                        new TextActionControlStyle( "Export" ),
                        usesSubmitBehavior: false ) );
            block.Style.Add( "text-align", "right" );
            return block;
        }