public static MvcHtmlString RenderTemplateAsColumns(this HtmlHelper helper,
                                                     ICollection items,
                                                     string partialViewName,
                                                     int numberOfColumns,
                                                     GetStringFromAction getStringMethod)
 {
     if (numberOfColumns < 1)
     {
         throw new ArgumentOutOfRangeException("numberOfColumns");
     }
     if (items == null)
     {
         throw new ArgumentNullException("items");
     }
     if (items == null || items.Count > 0)
     {
         StringBuilder builder           = new StringBuilder();
         int           columnsInRow      = 1;
         int           rowsDone          = 0;
         int           numberOfItemsDone = 0;
         int           numberOfExtraColumnsInLastRow;
         int           numberOfRows = items.Count / numberOfColumns;
         builder.Append("<table>");
         foreach (var item in items)
         {
             if (columnsInRow == 1)
             {
                 builder.Append("<tr>");
             }
             builder.Append("<td>");
             builder.Append(getStringMethod(partialViewName, item));
             builder.Append("</td>");
             bool isLastItem = (items.Count == numberOfItemsDone + 1);
             if ((columnsInRow == numberOfColumns) || isLastItem)
             {
                 if (isLastItem)
                 {
                     numberOfExtraColumnsInLastRow = numberOfColumns - columnsInRow;
                     builder.Append(RenderExtraColumns(numberOfExtraColumnsInLastRow));
                 }
                 builder.Append("</tr>");
                 columnsInRow = 1;
                 rowsDone++;
             }
             else
             {
                 columnsInRow++;
             }
             numberOfItemsDone++;
         }
         builder.Append("</table>");
         return(MvcHtmlString.Create(builder.ToString()));
     }
     return(MvcHtmlString.Empty);
 }
예제 #2
0
        public static HtmlString RenderTemplateAsColumns(this IHtmlHelper helper,
                ICollection items,
                string partialViewName,
                int numberOfColumns,
                GetStringFromAction getStringMethod
              )
        {
            //validate input
            if (numberOfColumns < 1)
            {
                throw new ArgumentOutOfRangeException("numberOfColumns");
            }
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            if (items == null || items.Count > 0)
            {

                StringBuilder builder = new StringBuilder();

                int columnsInRow = 1;
                int rowsDone = 0;
                int numberOfItemsDone = 0;
                int numberOfExtraColumnsInLastRow;

                //calculate the needed table structure
                int numberOfRows = items.Count / numberOfColumns;

                //Create the opening table tag
                builder.Append("<table>");

                //Create the rows and columns
                foreach (var item in items)
                {
                    if (columnsInRow == 1)
                    {
                        builder.Append("<tr>");
                    }

                    builder.Append("<td>");
                    builder.Append(getStringMethod(partialViewName, item));
                    builder.Append("</td>");
                    bool isLastItem = (items.Count == numberOfItemsDone + 1);

                    if ((columnsInRow == numberOfColumns) || isLastItem)
                    {
                        if (isLastItem)
                        {
                            numberOfExtraColumnsInLastRow = numberOfColumns - columnsInRow;
                            builder.Append(RenderExtraColumns(numberOfExtraColumnsInLastRow));
                        }
                        builder.Append("</tr>");
                        columnsInRow = 1;
                        rowsDone++;
                    }
                    else
                    {
                        columnsInRow++;
                    }

                    numberOfItemsDone++;
                }

                // create the closing table tag
                builder.Append("</table>");

                // convert output into HTMLString
                var tagBuilder = new TagBuilder("table");
                tagBuilder.InnerHtml = builder.ToString();
                return tagBuilder.ToHtmlString(TagRenderMode.Normal);

            }

            return HtmlString.Empty;
        }
예제 #3
0
        public static HtmlString RenderTemplateAsColumns(this IHtmlHelper helper,
                                                         ICollection items,
                                                         string partialViewName,
                                                         int numberOfColumns,
                                                         GetStringFromAction getStringMethod
                                                         )
        {
            //validate input
            if (numberOfColumns < 1)
            {
                throw new ArgumentOutOfRangeException("numberOfColumns");
            }
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            if (items == null || items.Count > 0)
            {
                StringBuilder builder = new StringBuilder();

                int columnsInRow      = 1;
                int rowsDone          = 0;
                int numberOfItemsDone = 0;
                int numberOfExtraColumnsInLastRow;

                //calculate the needed table structure
                int numberOfRows = items.Count / numberOfColumns;

                //Create the opening table tag
                builder.Append("<table>");

                //Create the rows and columns
                foreach (var item in items)
                {
                    if (columnsInRow == 1)
                    {
                        builder.Append("<tr>");
                    }

                    builder.Append("<td>");
                    builder.Append(getStringMethod(partialViewName, item));
                    builder.Append("</td>");
                    bool isLastItem = (items.Count == numberOfItemsDone + 1);

                    if ((columnsInRow == numberOfColumns) || isLastItem)
                    {
                        if (isLastItem)
                        {
                            numberOfExtraColumnsInLastRow = numberOfColumns - columnsInRow;
                            builder.Append(RenderExtraColumns(numberOfExtraColumnsInLastRow));
                        }
                        builder.Append("</tr>");
                        columnsInRow = 1;
                        rowsDone++;
                    }
                    else
                    {
                        columnsInRow++;
                    }

                    numberOfItemsDone++;
                }

                // create the closing table tag
                builder.Append("</table>");

                // convert output into HTMLString
                var tagBuilder = new TagBuilder("table");
                tagBuilder.InnerHtml = builder.ToString();
                return(tagBuilder.ToHtmlString(TagRenderMode.Normal));
            }

            return(HtmlString.Empty);
        }