Ejemplo n.º 1
0
        /// <devdoc>
        /// </devdoc>
        private void RenderVerticalRepeater(HtmlTextWriter writer, IRepeatInfoUser user, Style controlStyle, WebControl baseControl) {
            int itemCount = user.RepeatedItemCount;
            int totalColumns;
            int totalRows;
            int filledColumns;

            // List Layout Constraint --> Columns = 0 or 1
            if ((repeatColumns == 0) || (repeatColumns == 1)) {
                // A RepeatColumns of 0 implies a completely vertical repetition in
                // a single column. This is same as repeatColumns of 1.
                totalColumns = 1;
                filledColumns = 1;
                totalRows = itemCount;
            }
            else {
                totalColumns = repeatColumns;
                totalRows = (int)((itemCount + repeatColumns - 1) / repeatColumns);

                if ((totalRows == 0) && (itemCount != 0)) {
                    // if repeatColumns is a huge number like Int32.MaxValue, then the
                    // calculation above essentially reduces down to 0
                    totalRows = 1;
                }

                filledColumns = itemCount % totalColumns;
                if (filledColumns == 0) {
                    filledColumns = totalColumns;
                }
            }


            WebControl outerControl = null;
            bool tableLayout = false;

            // List Layout Constraint --> OuterTableImplied = false
            // List Layout Constraint --> tableLayout = false
            if (!outerTableImplied) {
                switch (repeatLayout) {
                    case RepeatLayout.Table:
                        outerControl = new Table();
                        if (Caption.Length != 0) {
                            ((Table)outerControl).Caption = Caption;
                            ((Table)outerControl).CaptionAlign = CaptionAlign;
                        }
                        tableLayout = true;
                        break;
                    case RepeatLayout.Flow:
                        outerControl = new WebControl(HtmlTextWriterTag.Span);
                        break;
                    case RepeatLayout.UnorderedList:
                        outerControl = new WebControl(HtmlTextWriterTag.Ul);
                        break;
                    case RepeatLayout.OrderedList:
                        outerControl = new WebControl(HtmlTextWriterTag.Ol);
                        break;
                }
            }

            bool separators = user.HasSeparators;
            // List Layout Constraint --> separators = false

            if (outerControl != null) {
                // use ClientID (and not ID) since we want to render out the fully qualified client id
                // even though this outer control will not be parented to the control hierarchy
                outerControl.ID = baseControl.ClientID;

                outerControl.CopyBaseAttributes(baseControl);
                outerControl.ApplyStyle(controlStyle);
                outerControl.RenderBeginTag(writer);
            }

            // List Layout Constraint --> HasHeader = false
            if (user.HasHeader) {
                if (tableLayout) {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                    // add attributes to render for TH
                    if (totalColumns != 1) {
                        int columnSpan = totalColumns;
                        if (separators)
                            columnSpan += totalColumns;
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, columnSpan.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    if (useAccessibleHeader) {
                        writer.AddAttribute(HtmlTextWriterAttribute.Scope, "col");
                    }

                    // add style attributes to render for TD/TH
                    Style style = user.GetItemStyle(ListItemType.Header, -1);
                    if (style != null) {
                        style.AddAttributesToRender(writer);
                    }

                    // render begin tag for TD/TH
                    if (useAccessibleHeader) {
                        writer.RenderBeginTag(HtmlTextWriterTag.Th);
                    }
                    else {
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    }
                }
                user.RenderItem(ListItemType.Header, -1, this, writer);
                if (tableLayout) {
                    // render end tags TD/TH and TR
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
                else if (!outerTableImplied) {
                    if (EnableLegacyRendering) {
                        writer.WriteObsoleteBreak();
                    }
                    else {
                        writer.WriteBreak();
                    }
                }
            }

            int itemCounter = 0;

            for (int currentRow = 0; currentRow < totalRows; currentRow++) {
                // List Layout Constraint --> tableLayout = false
                if (tableLayout) {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                }

                int itemIndex = currentRow;

                for (int currentCol = 0; currentCol < totalColumns; currentCol++) {
                    if (itemCounter >= itemCount) {
                        // done rendering all items, so break out of the loop now...
                        // we might end up here, in unfilled columns attempting to re-render items that
                        // have already been rendered on the next column in a prior row.
                        break;
                    }
                     
                    if (currentCol != 0) {
                        itemIndex += totalRows;
 
                        // if the previous column (currentColumn - 1) was not a filled column, i.e.,
                        // it had one less item (the maximum possible), then subtract 1 from the item index.
                        if ((currentCol - 1) >= filledColumns) {
                            itemIndex--;
                        }
                    }


                    if (itemIndex >= itemCount)
                        continue;

                    itemCounter++;

                    // List Layout Constraint --> tableLayout = false
                    if (tableLayout) {
                        // add style attributes to render for TD
                        Style style = user.GetItemStyle(ListItemType.Item, itemIndex);
                        if (style != null)
                            style.AddAttributesToRender(writer);
                        // render begin tag for TD
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    }

                    if (IsListLayout) {
                        writer.RenderBeginTag(HtmlTextWriterTag.Li);
                    }

                    user.RenderItem(ListItemType.Item, itemIndex, this, writer);

                    if (IsListLayout) {
                        writer.RenderEndTag();
                        writer.WriteLine();
                    }

                    // List Layout Constraint --> tableLayout = false
                    if (tableLayout) {
                        // render end tag for TD
                        writer.RenderEndTag();
                    }

                    // List Layout Constraint --> separators = false
                    if (separators) {
                        if (itemIndex != (itemCount - 1)) {
                            if (totalColumns == 1) {
                                if (tableLayout) {
                                    writer.RenderEndTag();
                                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                                }
                                else {
                                    if (!outerTableImplied) {
                                        if (EnableLegacyRendering) {
                                            writer.WriteObsoleteBreak();
                                        }
                                        else {
                                            writer.WriteBreak();
                                        }
                                    }
                                }
                            }
    
                            if (tableLayout) {
                                Style style = user.GetItemStyle(ListItemType.Separator, itemIndex);
                                if (style != null)
                                    style.AddAttributesToRender(writer);
                                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                            }
                            if (itemIndex < itemCount)
                                user.RenderItem(ListItemType.Separator, itemIndex, this, writer);
                            if (tableLayout)
                                writer.RenderEndTag();
                        }
                        else {
                            // if we're on the last filled line and separators are specified, add another <td/>
                            // to accomodate for the lack of a separator on the last item.  If there's only one
                            // column, though, separators will get their own row anyways.
                            if (tableLayout && totalColumns > 1) {
                                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                                writer.RenderEndTag();
                            }
                        }
                    }
                }
             
                // on the last line, fill in the remaining empty slots with <td/>s.  We need twice as many
                // if there were separators.
                // List Layout Constraint --> tableLayout = false
                if (tableLayout) {
                    if (currentRow == totalRows - 1) {
                        int unfilledColumns = totalColumns - filledColumns;
                        if (separators) {
                            int unfilledColumnsWithSeparators = unfilledColumns * 2;
                            if (unfilledColumnsWithSeparators >= unfilledColumns) {
                                unfilledColumns = unfilledColumnsWithSeparators;
                            }
                        }
                        if (unfilledColumns != 0) {
                            for (int i = 0; i < unfilledColumns; i++) {
                                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                                writer.RenderEndTag();
                            }
                        }
                    }
                    writer.RenderEndTag();
                }
                else {
                    if (((currentRow != totalRows - 1) || user.HasFooter) &&
                        (!outerTableImplied) && (!IsListLayout)) {

                        if (EnableLegacyRendering) {
                            writer.WriteObsoleteBreak();
                        }
                        else {
                            writer.WriteBreak();
                        }
                    }
                }
            }

            // List Layout Constraint --> HasFooter = false
            if (user.HasFooter) {
                if (tableLayout) {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    // add attributes to render for TD
                    if (totalColumns != 1) {
                        int columnSpan = totalColumns;
                        if (separators)
                            columnSpan += totalColumns;
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, columnSpan.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    // add style attributes to render for TD
                    Style style = user.GetItemStyle(ListItemType.Footer, -1);
                    if (style != null)
                        style.AddAttributesToRender(writer);
                    // render begin tag for TD
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                }
                user.RenderItem(ListItemType.Footer, -1, this, writer);
                if (tableLayout) {
                    // render end tag for TR and TD
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
            }

            if (outerControl != null)
                outerControl.RenderEndTag(writer);
        }
Ejemplo n.º 2
0
        /// <devdoc>
        /// </devdoc>
        private void RenderHorizontalRepeater(HtmlTextWriter writer, IRepeatInfoUser user, Style controlStyle, WebControl baseControl) {
            Debug.Assert(outerTableImplied == false, "Cannot use outer implied table with Horizontal layout");

            int itemCount = user.RepeatedItemCount;

            int totalColumns = repeatColumns;
            int currentColumn = 0;

            if (totalColumns == 0) {
                // 0 implies a complete horizontal repetition without any
                // column count constraints
                totalColumns = itemCount;
            }

            WebControl outerControl = null;
            bool tableLayout = false;

            switch (repeatLayout) {
                case RepeatLayout.Table:
                    outerControl = new Table();
                    if (Caption.Length != 0) {
                        ((Table)outerControl).Caption = Caption;
                        ((Table)outerControl).CaptionAlign = CaptionAlign;
                    }
                    tableLayout = true;
                    break;
                case RepeatLayout.Flow:
                    outerControl = new WebControl(HtmlTextWriterTag.Span);
                    break;
            }

            bool separators = user.HasSeparators;

            // use ClientID (and not ID) since we want to render out the fully qualified client id
            // even though this outer control will not be parented to the control hierarchy
            outerControl.ID = baseControl.ClientID;

            outerControl.CopyBaseAttributes(baseControl);
            outerControl.ApplyStyle(controlStyle);
            outerControl.RenderBeginTag(writer);

            if (user.HasHeader) {
                if (tableLayout) {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                    // add attributes to render for TD/TH
                    if ((totalColumns != 1) || separators) {
                        int columnSpan = totalColumns;
                        if (separators)
                            columnSpan += totalColumns;
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, columnSpan.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    if (useAccessibleHeader) {
                        writer.AddAttribute(HtmlTextWriterAttribute.Scope, "col");
                    }

                    // add style attributes to render for TD/TH
                    Style style = user.GetItemStyle(ListItemType.Header, -1);
                    if (style != null) {
                        style.AddAttributesToRender(writer);
                    }

                    // render begin tag
                    if (useAccessibleHeader) {
                        writer.RenderBeginTag(HtmlTextWriterTag.Th);
                    }
                    else {
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    }
                }
                user.RenderItem(ListItemType.Header, -1, this, writer);
                if (tableLayout) {
                    // render end tags TD/TH and TR
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
                else {
                    if (totalColumns < itemCount) {
                        // we have multiple rows, so have a break between the header and first row.
                        if (EnableLegacyRendering) {
                            writer.WriteObsoleteBreak();
                        }
                        else {
                            writer.WriteBreak();
                        }
                    }
                }
            }

            for (int i = 0; i < itemCount; i++) {
                if (tableLayout && (currentColumn == 0)) {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                }

                if (tableLayout) {
                    // add style attributes to render for TD
                    Style style = user.GetItemStyle(ListItemType.Item, i);
                    if (style != null)
                        style.AddAttributesToRender(writer);
                    // render begin tag for TD
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                }
                user.RenderItem(ListItemType.Item, i, this, writer);
                if (tableLayout) {
                    // render end tag for TD
                    writer.RenderEndTag();
                }
                if (separators && (i != (itemCount - 1))) {
                    if (tableLayout) {
                        Style style = user.GetItemStyle(ListItemType.Separator, i);
                        if (style != null)
                            style.AddAttributesToRender(writer);
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    }
                    user.RenderItem(ListItemType.Separator, i, this, writer);
                    if (tableLayout)
                        writer.RenderEndTag();
                }

                currentColumn++;
                
                // on the last line, fill in the rest of the empty spots with <td/>s.
                // If there were separators, we need twice as many plus one to accomodate for
                // the last item not having a separator after it.
                if (tableLayout && i == itemCount - 1) {
                    int unfilledColumns = totalColumns - currentColumn;
                    if (separators == true) {
                        int unfilledColumnsWithSeparators = (unfilledColumns * 2) + 1;
                        if (unfilledColumnsWithSeparators > unfilledColumns) {
                            unfilledColumns = unfilledColumnsWithSeparators;
                        }
                    }
                    for (int k = 0; k < unfilledColumns; k++) {
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                        writer.RenderEndTag();
                    }
                }
                
                if ((currentColumn == totalColumns) || (i == itemCount - 1)) {
                    if (tableLayout) {
                        // End tag for TR
                        writer.RenderEndTag();
                    }
                    else {
                        // write out the <br> after rows when there are multiple rows
                        if (totalColumns < itemCount) {
                            if (EnableLegacyRendering) {
                                writer.WriteObsoleteBreak();
                            }
                            else {
                                writer.WriteBreak();
                            }
                        }
                    }

                    currentColumn = 0;
                }
            }

            if (user.HasFooter) {
                if (tableLayout) {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                    if ((totalColumns != 1) || separators) {
                        // add attributes to render for TD
                        int columnSpan = totalColumns;
                        if (separators)
                            columnSpan += totalColumns;
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, columnSpan.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    // add style attributes to render for TD
                    Style style = user.GetItemStyle(ListItemType.Footer, -1);
                    if (style != null)
                        style.AddAttributesToRender(writer);
                    // render begin tag for TD
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                }
                user.RenderItem(ListItemType.Footer, -1, this, writer);
                if (tableLayout) {
                    // render end tag for TR and TD
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
            }

            outerControl.RenderEndTag(writer);
        }
        private void RenderVerticalRepeater(HtmlTextWriter writer, IRepeatInfoUser user, Style controlStyle, WebControl baseControl)
        {
            int repeatColumns;
            int num3;
            int num4;
            int repeatedItemCount = user.RepeatedItemCount;
            if ((this.repeatColumns == 0) || (this.repeatColumns == 1))
            {
                repeatColumns = 1;
                num4 = 1;
                num3 = repeatedItemCount;
            }
            else
            {
                repeatColumns = this.repeatColumns;
                num3 = ((repeatedItemCount + this.repeatColumns) - 1) / this.repeatColumns;
                if ((num3 == 0) && (repeatedItemCount != 0))
                {
                    num3 = 1;
                }
                num4 = repeatedItemCount % repeatColumns;
                if (num4 == 0)
                {
                    num4 = repeatColumns;
                }
            }
            WebControl control = null;
            bool flag = false;
            if (!this.outerTableImplied)
            {
                switch (this.repeatLayout)
                {
                    case System.Web.UI.WebControls.RepeatLayout.Table:
                        control = new Table();
                        if (this.Caption.Length != 0)
                        {
                            ((Table) control).Caption = this.Caption;
                            ((Table) control).CaptionAlign = this.CaptionAlign;
                        }
                        flag = true;
                        break;

                    case System.Web.UI.WebControls.RepeatLayout.Flow:
                        control = new WebControl(HtmlTextWriterTag.Span);
                        break;

                    case System.Web.UI.WebControls.RepeatLayout.UnorderedList:
                        control = new WebControl(HtmlTextWriterTag.Ul);
                        break;

                    case System.Web.UI.WebControls.RepeatLayout.OrderedList:
                        control = new WebControl(HtmlTextWriterTag.Ol);
                        break;
                }
            }
            bool hasSeparators = user.HasSeparators;
            if (control != null)
            {
                control.ID = baseControl.ClientID;
                control.CopyBaseAttributes(baseControl);
                control.ApplyStyle(controlStyle);
                control.RenderBeginTag(writer);
            }
            if (user.HasHeader)
            {
                if (flag)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    if (repeatColumns != 1)
                    {
                        int num5 = repeatColumns;
                        if (hasSeparators)
                        {
                            num5 += repeatColumns;
                        }
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, num5.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    if (this.useAccessibleHeader)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Scope, "col");
                    }
                    Style itemStyle = user.GetItemStyle(ListItemType.Header, -1);
                    if (itemStyle != null)
                    {
                        itemStyle.AddAttributesToRender(writer);
                    }
                    if (this.useAccessibleHeader)
                    {
                        writer.RenderBeginTag(HtmlTextWriterTag.Th);
                    }
                    else
                    {
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    }
                }
                user.RenderItem(ListItemType.Header, -1, this, writer);
                if (flag)
                {
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
                else if (!this.outerTableImplied)
                {
                    if (this.EnableLegacyRendering)
                    {
                        writer.WriteObsoleteBreak();
                    }
                    else
                    {
                        writer.WriteBreak();
                    }
                }
            }
            int num6 = 0;
            for (int i = 0; i < num3; i++)
            {
                if (flag)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                }
                int repeatIndex = i;
                for (int j = 0; j < repeatColumns; j++)
                {
                    if (num6 >= repeatedItemCount)
                    {
                        break;
                    }
                    if (j != 0)
                    {
                        repeatIndex += num3;
                        if ((j - 1) >= num4)
                        {
                            repeatIndex--;
                        }
                    }
                    if (repeatIndex < repeatedItemCount)
                    {
                        num6++;
                        if (flag)
                        {
                            Style style2 = user.GetItemStyle(ListItemType.Item, repeatIndex);
                            if (style2 != null)
                            {
                                style2.AddAttributesToRender(writer);
                            }
                            writer.RenderBeginTag(HtmlTextWriterTag.Td);
                        }
                        if (this.IsListLayout)
                        {
                            writer.RenderBeginTag(HtmlTextWriterTag.Li);
                        }
                        user.RenderItem(ListItemType.Item, repeatIndex, this, writer);
                        if (this.IsListLayout)
                        {
                            writer.RenderEndTag();
                            writer.WriteLine();
                        }
                        if (flag)
                        {
                            writer.RenderEndTag();
                        }
                        if (hasSeparators)
                        {
                            if (repeatIndex != (repeatedItemCount - 1))
                            {
                                if (repeatColumns == 1)
                                {
                                    if (flag)
                                    {
                                        writer.RenderEndTag();
                                        writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                                    }
                                    else if (!this.outerTableImplied)
                                    {
                                        if (this.EnableLegacyRendering)
                                        {
                                            writer.WriteObsoleteBreak();
                                        }
                                        else
                                        {
                                            writer.WriteBreak();
                                        }
                                    }
                                }
                                if (flag)
                                {
                                    Style style3 = user.GetItemStyle(ListItemType.Separator, repeatIndex);
                                    if (style3 != null)
                                    {
                                        style3.AddAttributesToRender(writer);
                                    }
                                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                                }
                                if (repeatIndex < repeatedItemCount)
                                {
                                    user.RenderItem(ListItemType.Separator, repeatIndex, this, writer);
                                }
                                if (flag)
                                {
                                    writer.RenderEndTag();
                                }
                            }
                            else if (flag && (repeatColumns > 1))
                            {
                                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                                writer.RenderEndTag();
                            }
                        }
                    }
                }
                if (flag)
                {
                    if (i == (num3 - 1))
                    {
                        int num10 = repeatColumns - num4;
                        if (hasSeparators)
                        {
                            int num11 = num10 * 2;
                            if (num11 >= num10)
                            {
                                num10 = num11;
                            }
                        }
                        if (num10 != 0)
                        {
                            for (int k = 0; k < num10; k++)
                            {
                                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                                writer.RenderEndTag();
                            }
                        }
                    }
                    writer.RenderEndTag();
                }
                else if (((i != (num3 - 1)) || user.HasFooter) && (!this.outerTableImplied && !this.IsListLayout))
                {
                    if (this.EnableLegacyRendering)
                    {
                        writer.WriteObsoleteBreak();
                    }
                    else
                    {
                        writer.WriteBreak();
                    }
                }
            }
            if (user.HasFooter)
            {
                if (flag)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    if (repeatColumns != 1)
                    {
                        int num13 = repeatColumns;
                        if (hasSeparators)
                        {
                            num13 += repeatColumns;
                        }
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, num13.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    Style style4 = user.GetItemStyle(ListItemType.Footer, -1);
                    if (style4 != null)
                    {
                        style4.AddAttributesToRender(writer);
                    }
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                }
                user.RenderItem(ListItemType.Footer, -1, this, writer);
                if (flag)
                {
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
            }
            if (control != null)
            {
                control.RenderEndTag(writer);
            }
        }
 private void WriteBreakIfPresent(HtmlTextWriter writer, string text)
 {
     if (text == "b")
     {
         if (base.EnableLegacyRendering)
         {
             writer.WriteObsoleteBreak();
         }
         else
         {
             writer.WriteBreak();
         }
     }
     else
     {
         writer.Write(text);
     }
 }
        private void RenderHorizontalRepeater(HtmlTextWriter writer, IRepeatInfoUser user, Style controlStyle, WebControl baseControl)
        {
            int repeatedItemCount = user.RepeatedItemCount;
            int repeatColumns = this.repeatColumns;
            int num3 = 0;
            if (repeatColumns == 0)
            {
                repeatColumns = repeatedItemCount;
            }
            WebControl control = null;
            bool flag = false;
            switch (this.repeatLayout)
            {
                case System.Web.UI.WebControls.RepeatLayout.Table:
                    control = new Table();
                    if (this.Caption.Length != 0)
                    {
                        ((Table) control).Caption = this.Caption;
                        ((Table) control).CaptionAlign = this.CaptionAlign;
                    }
                    flag = true;
                    break;

                case System.Web.UI.WebControls.RepeatLayout.Flow:
                    control = new WebControl(HtmlTextWriterTag.Span);
                    break;
            }
            bool hasSeparators = user.HasSeparators;
            control.ID = baseControl.ClientID;
            control.CopyBaseAttributes(baseControl);
            control.ApplyStyle(controlStyle);
            control.RenderBeginTag(writer);
            if (user.HasHeader)
            {
                if (flag)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    if ((repeatColumns != 1) || hasSeparators)
                    {
                        int num4 = repeatColumns;
                        if (hasSeparators)
                        {
                            num4 += repeatColumns;
                        }
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, num4.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    if (this.useAccessibleHeader)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Scope, "col");
                    }
                    Style itemStyle = user.GetItemStyle(ListItemType.Header, -1);
                    if (itemStyle != null)
                    {
                        itemStyle.AddAttributesToRender(writer);
                    }
                    if (this.useAccessibleHeader)
                    {
                        writer.RenderBeginTag(HtmlTextWriterTag.Th);
                    }
                    else
                    {
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    }
                }
                user.RenderItem(ListItemType.Header, -1, this, writer);
                if (flag)
                {
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
                else if (repeatColumns < repeatedItemCount)
                {
                    if (this.EnableLegacyRendering)
                    {
                        writer.WriteObsoleteBreak();
                    }
                    else
                    {
                        writer.WriteBreak();
                    }
                }
            }
            for (int i = 0; i < repeatedItemCount; i++)
            {
                if (flag && (num3 == 0))
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                }
                if (flag)
                {
                    Style style2 = user.GetItemStyle(ListItemType.Item, i);
                    if (style2 != null)
                    {
                        style2.AddAttributesToRender(writer);
                    }
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                }
                user.RenderItem(ListItemType.Item, i, this, writer);
                if (flag)
                {
                    writer.RenderEndTag();
                }
                if (hasSeparators && (i != (repeatedItemCount - 1)))
                {
                    if (flag)
                    {
                        Style style3 = user.GetItemStyle(ListItemType.Separator, i);
                        if (style3 != null)
                        {
                            style3.AddAttributesToRender(writer);
                        }
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    }
                    user.RenderItem(ListItemType.Separator, i, this, writer);
                    if (flag)
                    {
                        writer.RenderEndTag();
                    }
                }
                num3++;
                if (flag && (i == (repeatedItemCount - 1)))
                {
                    int num6 = repeatColumns - num3;
                    if (hasSeparators)
                    {
                        int num7 = (num6 * 2) + 1;
                        if (num7 > num6)
                        {
                            num6 = num7;
                        }
                    }
                    for (int j = 0; j < num6; j++)
                    {
                        writer.RenderBeginTag(HtmlTextWriterTag.Td);
                        writer.RenderEndTag();
                    }
                }
                if ((num3 == repeatColumns) || (i == (repeatedItemCount - 1)))
                {
                    if (flag)
                    {
                        writer.RenderEndTag();
                    }
                    else if (repeatColumns < repeatedItemCount)
                    {
                        if (this.EnableLegacyRendering)
                        {
                            writer.WriteObsoleteBreak();
                        }
                        else
                        {
                            writer.WriteBreak();
                        }
                    }
                    num3 = 0;
                }
            }
            if (user.HasFooter)
            {
                if (flag)
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    if ((repeatColumns != 1) || hasSeparators)
                    {
                        int num9 = repeatColumns;
                        if (hasSeparators)
                        {
                            num9 += repeatColumns;
                        }
                        writer.AddAttribute(HtmlTextWriterAttribute.Colspan, num9.ToString(NumberFormatInfo.InvariantInfo));
                    }
                    Style style4 = user.GetItemStyle(ListItemType.Footer, -1);
                    if (style4 != null)
                    {
                        style4.AddAttributesToRender(writer);
                    }
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                }
                user.RenderItem(ListItemType.Footer, -1, this, writer);
                if (flag)
                {
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
            }
            control.RenderEndTag(writer);
        }