protected override void RenderContents(HtmlTextWriter writer)
        {
            if (Extender.AdapterEnabled)
            {
                DataList dataList = Control as DataList;
                int columns = (dataList.SeparatorTemplate == null ? RepeatColumns : RepeatColumns * 2);

                if (dataList != null)
                {
                    if (dataList.RepeatLayout == RepeatLayout.Table)
                    {
                    writer.Indent++;
                    writer.WriteLine();
                    writer.WriteBeginTag("table");
                    writer.WriteAttribute("cellpadding", dataList.CellPadding.ToString());
                    writer.WriteAttribute("cellspacing", dataList.CellSpacing.ToString());
                    writer.WriteAttribute("summary", Control.ToolTip);
                    writer.Write(HtmlTextWriter.TagRightChar);
                    writer.Indent++;

                    if (dataList.HeaderTemplate != null && dataList.ShowHeader)
                    {
                        if (!String.IsNullOrEmpty(dataList.Caption))
                        {
                            writer.WriteLine();
                            writer.WriteBeginTag("caption");
                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Write(dataList.Caption);
                            writer.WriteEndTag("caption");
                        }

                        writer.WriteLine();
                        writer.WriteBeginTag("thead");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        writer.WriteLine();
                        writer.WriteBeginTag("tr");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        writer.WriteLine();
                        writer.WriteBeginTag("th");
                        writer.WriteAttribute("colspan", columns.ToString());
                        string className = "AspNet-DataList-Header ";
                        if (dataList.HeaderStyle != null)
                        {
                            className += dataList.HeaderStyle.CssClass;
                        }
                        writer.WriteAttribute("class", className);
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        PlaceHolder container = new PlaceHolder();
                        dataList.HeaderTemplate.InstantiateIn(container);
                        container.DataBind();
                        container.RenderControl(writer);

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("th");

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("tr");

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("thead");

                    }

                    if (dataList.FooterTemplate != null && dataList.ShowFooter)
                    {
                        writer.WriteLine();
                        writer.WriteBeginTag("tfoot");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        writer.WriteLine();
                        writer.WriteBeginTag("tr");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        writer.WriteLine();
                        writer.WriteBeginTag("td");
                        writer.WriteAttribute("colspan", columns.ToString());
                        string className = "AspNet-DataList-Footer ";
                        if (dataList.FooterStyle != null)
                        {
                            className += dataList.FooterStyle.CssClass;
                        }
                        writer.WriteAttribute("class", className);
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        PlaceHolder container = new PlaceHolder();
                        dataList.FooterTemplate.InstantiateIn(container);
                        container.DataBind();
                        container.RenderControl(writer);

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("td");

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("tr");

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("tfoot");
                    }

                    if (dataList.ItemTemplate != null)
                    {
                        writer.WriteLine();
                        writer.WriteBeginTag("tbody");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        int nItemsInColumn = (int)Math.Ceiling(((Double)dataList.Items.Count) / ((Double)RepeatColumns));
                        for (int iItem = 0; iItem < dataList.Items.Count; iItem++)
                        {
                            int nRow = iItem / RepeatColumns;
                            int nCol = iItem % RepeatColumns;
                            int nDesiredIndex = iItem;
                            if (dataList.RepeatDirection == RepeatDirection.Vertical)
                            {
                                nDesiredIndex = (nCol * nItemsInColumn) + nRow;
                            }

                            if ((iItem % RepeatColumns) == 0)
                            {
                                writer.WriteLine();
                                writer.WriteBeginTag("tr");
                                writer.Write(HtmlTextWriter.TagRightChar);
                                writer.Indent++;
                            }

                            writer.WriteLine();
                            writer.WriteBeginTag("td");

                            string className = GetRowClass(dataList, dataList.Items[iItem]);
                            if (!String.IsNullOrEmpty(className))
                            {
                                writer.WriteAttribute("class", className);
                            }

                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Indent++;

                                foreach (Control itemCtrl in dataList.Items[nDesiredIndex /*iItem*/].Controls)
                            {
                                itemCtrl.RenderControl(writer);
                            }

                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("td");

                                if (dataList.SeparatorTemplate != null && (iItem + 1 < dataList.Items.Count))
                            {
                                writer.WriteLine();
                                writer.WriteBeginTag("td");
                                className = "AspNet-DataList-Separator ";
                                if (dataList.SeparatorStyle != null)
                                {
                                    className += dataList.SeparatorStyle.CssClass;
                                }
                                writer.WriteAttribute("class", className.Trim());
                                writer.Write(HtmlTextWriter.TagRightChar);
                                writer.Indent++;

                                PlaceHolder container = new PlaceHolder();
                                dataList.SeparatorTemplate.InstantiateIn(container);
                                container.DataBind();
                                container.RenderControl(writer);

                                writer.Indent--;
                                writer.WriteLine();
                                writer.WriteEndTag("td");
                            }

                            if (((iItem + 1) % RepeatColumns) == 0)
                            {
                                writer.Indent--;
                                writer.WriteLine();
                                writer.WriteEndTag("tr");
                            }
                        }

                        if ((dataList.Items.Count % RepeatColumns) != 0)
                        {
                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("tr");
                        }

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("tbody");
                    }

                    writer.Indent--;
                    writer.WriteLine();
                    writer.WriteEndTag("table");

                    writer.Indent--;
                    writer.WriteLine();
                    }
                    else
                    {
                        if (dataList.HeaderTemplate != null && dataList.ShowHeader)
                        {
                            if (!String.IsNullOrEmpty(dataList.Caption))
                            {
                                writer.WriteLine();
                                writer.WriteBeginTag("div");
                                string classNameCaption = "AspNet-DataList-Caption ";
                                writer.WriteAttribute("class", classNameCaption);
                                writer.Write(HtmlTextWriter.TagRightChar);
                                writer.WriteLine();
                                writer.Indent++;
                                writer.Write(dataList.Caption);
                                writer.Indent--;
                                writer.WriteLine();
                                writer.WriteEndTag("div");
                            }

                            writer.WriteLine();

                            writer.WriteLine();
                            writer.WriteBeginTag("div");
                            string className = "AspNet-DataList-Header ";
                            if (dataList.HeaderStyle != null)
                            {
                                className += dataList.HeaderStyle.CssClass;
                            }
                            writer.WriteAttribute("class", className);
                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Indent++;

                            PlaceHolder container = new PlaceHolder();
                            dataList.HeaderTemplate.InstantiateIn(container);
                            container.DataBind();
                            container.RenderControl(writer);

                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("div");
                        }

                        writer.Indent++;
                        writer.WriteLine();
                        writer.WriteBeginTag("ul");
                        string classNameOuterList = "AspNet-DataList-Outer-List";
                        writer.WriteAttribute("class", classNameOuterList);
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        if (dataList.ItemTemplate != null)
                        {
                            int nItemsInColumn = (int)Math.Ceiling(((Double)dataList.Items.Count) / ((Double)RepeatColumns));
                            int repeatItemsInList;
                            if (dataList.RepeatDirection == RepeatDirection.Horizontal)
                            {
                                repeatItemsInList = RepeatColumns;
                            }
                            else
                            {
                                repeatItemsInList = nItemsInColumn;
                            }

                            for (int iItem = 0; iItem < dataList.Items.Count; iItem++)
                            {
                                int nRow;
                                int nCol;

                                if (dataList.RepeatDirection == RepeatDirection.Horizontal)
                                {
                                    nRow = iItem / RepeatColumns;
                                    nCol = iItem % RepeatColumns;
                                }
                                else
                                {
                                    nRow = iItem / nItemsInColumn;
                                    nCol = iItem % nItemsInColumn;
                                }

                                if ((dataList.RepeatColumns > 1) && ((iItem % repeatItemsInList) == 0))
                                {
                                    writer.WriteLine();
                                    writer.WriteBeginTag("li");
                                    string classNameRowOrColumn;
                                    if (dataList.RepeatDirection == RepeatDirection.Horizontal)
                                    {
                                        classNameRowOrColumn = "AspNet-DataList-Row";
                                    }
                                    else
                                    {
                                        classNameRowOrColumn = "AspNet-DataList-Column";
                                    }
                                    writer.WriteAttribute("class", classNameRowOrColumn);
                                    writer.Write(HtmlTextWriter.TagRightChar);
                                    writer.Indent++;
                                    writer.WriteLine();
                                    writer.WriteBeginTag("ul");
                                    string classNameRowOrColumnList;
                                    if (dataList.RepeatDirection == RepeatDirection.Horizontal)
                                    {
                                        classNameRowOrColumnList = "AspNet-DataList-Row-List";
                                    }
                                    else
                                    {
                                        classNameRowOrColumnList = "AspNet-DataList-Column-List";
                                    }
                                    writer.WriteAttribute("class", classNameRowOrColumnList);
                                    writer.Write(HtmlTextWriter.TagRightChar);
                                    writer.Indent++;
                                }

                                writer.WriteLine();
                                writer.WriteBeginTag("li");
                                string className = GetRowClass(dataList, dataList.Items[iItem]);
                                if (!String.IsNullOrEmpty(className))
                                {
                                    writer.WriteAttribute("class", className);
                                }
                                writer.Write(HtmlTextWriter.TagRightChar);
                                writer.Indent++;

                                foreach (Control itemCtrl in dataList.Items[iItem].Controls)
                                {
                                    itemCtrl.RenderControl(writer);
                                }
                                writer.Indent--;
                                writer.WriteEndTag("li");

                                if (dataList.SeparatorTemplate != null && (iItem + 1 < dataList.Items.Count))
                                {
                                    writer.WriteLine();
                                    writer.WriteBeginTag("li");
                                    className = "AspNet-DataList-Separator ";
                                    if (dataList.SeparatorStyle != null)
                                    {
                                        className += dataList.SeparatorStyle.CssClass;
                                    }
                                    writer.WriteAttribute("class", className.Trim());
                                    writer.Write(HtmlTextWriter.TagRightChar);
                                    writer.Indent++;

                                    PlaceHolder container = new PlaceHolder();
                                    dataList.SeparatorTemplate.InstantiateIn(container);
                                    container.DataBind();
                                    container.RenderControl(writer);

                                    writer.Indent--;
                                    writer.WriteLine();
                                    writer.WriteEndTag("li");
                                }

                                if ((dataList.RepeatColumns > 1) && (((iItem + 1) % repeatItemsInList) == 0))
                                {
                                    writer.Indent--;
                                    writer.WriteLine();
                                    writer.WriteEndTag("ul");
                                    writer.Indent--;
                                    writer.WriteLine();
                                    writer.WriteEndTag("li");
                                }
                            }

                            if ((dataList.Items.Count > 0) && (dataList.RepeatColumns > 1) && ((dataList.Items.Count % repeatItemsInList) != 0))
                            {
                                writer.Indent--;
                                writer.WriteLine();
                                writer.WriteEndTag("ul");
                                writer.Indent--;
                                writer.WriteLine();
                                writer.WriteEndTag("li");
                            }
                        }

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("ul");

                        writer.Indent--;
                        writer.WriteLine();

                        if (dataList.FooterTemplate != null && dataList.ShowFooter)
                        {
                            writer.WriteLine();
                            writer.WriteBeginTag("div");
                            string className = "AspNet-DataList-Footer ";
                            if (dataList.FooterStyle != null)
                            {
                                className += dataList.FooterStyle.CssClass;
                            }
                            writer.WriteAttribute("class", className);
                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Indent++;

                            PlaceHolder container = new PlaceHolder();
                            dataList.FooterTemplate.InstantiateIn(container);
                            container.DataBind();
                            container.RenderControl(writer);

                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("div");
                        }
                    }
                }
            }
            else
            {
                base.RenderContents(writer);
            }
        }
Ejemplo n.º 2
0
        protected override void RenderContents(HtmlTextWriter writer)
        {
            if (Extender.AdapterEnabled)
            {
                DataList dataList = Control as DataList;
                if (dataList != null)
                {
                    writer.Indent++;
                    writer.WriteLine();
                    writer.WriteBeginTag("table");
                    writer.WriteAttribute("cellpadding", "0");
                    writer.WriteAttribute("cellspacing", "0");
                    writer.WriteAttribute("summary", Control.ToolTip);
                    writer.Write(HtmlTextWriter.TagRightChar);
                    writer.Indent++;

                    if (dataList.HeaderTemplate != null)
                    {
                        PlaceHolder container = new PlaceHolder();
                        dataList.HeaderTemplate.InstantiateIn(container);
                        container.DataBind();

                        if ((container.Controls.Count == 1) && typeof(LiteralControl).IsInstanceOfType(container.Controls[0]))
                        {
                            writer.WriteLine();
                            writer.WriteBeginTag("caption");
                            writer.Write(HtmlTextWriter.TagRightChar);

                            LiteralControl literalControl = container.Controls[0] as LiteralControl;
                            writer.Write(literalControl.Text.Trim());

                            writer.WriteEndTag("caption");
                        }
                        else
                        {
                            writer.WriteLine();
                            writer.WriteBeginTag("thead");
                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Indent++;

                            writer.WriteLine();
                            writer.WriteBeginTag("tr");
                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Indent++;

                            writer.WriteLine();
                            writer.WriteBeginTag("th");
                            writer.WriteAttribute("colspan", RepeatColumns.ToString());
                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Indent++;

                            writer.WriteLine();
                            container.RenderControl(writer);

                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("th");

                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("tr");

                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("thead");
                        }
                    }

                    if (dataList.FooterTemplate != null)
                    {
                        writer.WriteLine();
                        writer.WriteBeginTag("tfoot");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        writer.WriteLine();
                        writer.WriteBeginTag("tr");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        writer.WriteLine();
                        writer.WriteBeginTag("td");
                        writer.WriteAttribute("colspan", RepeatColumns.ToString());
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        PlaceHolder container = new PlaceHolder();
                        dataList.FooterTemplate.InstantiateIn(container);
                        container.DataBind();
                        container.RenderControl(writer);

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("td");

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("tr");

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("tfoot");
                    }

                    if (dataList.ItemTemplate != null)
                    {
                        writer.WriteLine();
                        writer.WriteBeginTag("tbody");
                        writer.Write(HtmlTextWriter.TagRightChar);
                        writer.Indent++;

                        int nItemsInColumn = (int)Math.Ceiling(((Double)dataList.Items.Count) / ((Double)RepeatColumns));
                        for (int iItem = 0; iItem < dataList.Items.Count; iItem++)
                        {
                            int nRow = iItem / RepeatColumns;
                            int nCol = iItem % RepeatColumns;
                            int nDesiredIndex = iItem;
                            if (dataList.RepeatDirection == RepeatDirection.Vertical)
                            {
                                nDesiredIndex = (nCol * nItemsInColumn) + nRow;
                            }

                            if ((iItem % RepeatColumns) == 0)
                            {
                                writer.WriteLine();
                                writer.WriteBeginTag("tr");
                                writer.Write(HtmlTextWriter.TagRightChar);
                                writer.Indent++;
                            }

                            writer.WriteLine();
                            writer.WriteBeginTag("td");
                            writer.Write(HtmlTextWriter.TagRightChar);
                            writer.Indent++;

                            foreach (Control itemCtrl in dataList.Items[iItem].Controls)
                            {
                                itemCtrl.RenderControl(writer);
                            }

                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("td");

                            if (((iItem + 1) % RepeatColumns) == 0)
                            {
                                writer.Indent--;
                                writer.WriteLine();
                                writer.WriteEndTag("tr");
                            }
                        }

                        if ((dataList.Items.Count % RepeatColumns) != 0)
                        {
                            writer.Indent--;
                            writer.WriteLine();
                            writer.WriteEndTag("tr");
                        }

                        writer.Indent--;
                        writer.WriteLine();
                        writer.WriteEndTag("tbody");
                    }

                    writer.Indent--;
                    writer.WriteLine();
                    writer.WriteEndTag("table");

                    writer.Indent--;
                    writer.WriteLine();
                }
            }
            else
            {
                base.RenderContents(writer);
            }
        }